问题在于,2.34e+022是一个小数点左边有23位的数字。加上1,就是在第23位加1。但float类型只能表示数字中的前6位或前7位,因此修改第23位对这个值不会有任何影响。 另外,程序进行运算时,低精度的会自动向高精度转换,比如有double时,int和float都会转换成double。double消耗的内存是float的两倍,运算速度比float慢...
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字; 【也可以这么算,0.000001的精度为10^(-6), 2^20 = 1048576; 1/1048576的精度高于10^(-6), 但是23位不够表示10^(-7),所以为有效位数为6-7位;】 double:2^52 = 45035996273704...