float与double用法

为什么当 float x = 51539607552时,减去1000;无法计算。即还是原值。
而用double 却可以。

float的精度只有6~7位,也就是最多只有前7位5153960是准确的,再往后都是无效值,1000只有3位在无效值的范围内,所以不论加减1000都不能得到正确结果。而double的精度有15~16位,这个数在double的精度范围内,所以可以得到正确结果。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-11-15
float和double的精度是由尾数的位数来决定的。
浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
因为float最多能有7位有效数字, float x = 51539607552,减去1000后,有效数字不变,double x为11位可以计算。
相似回答