首先,百度到的官方解释是:
float具有 4 个字节,包括一个符号位、一个 8 位二进制指数和一个 23 位尾数。由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。
2^23 = 8388608,一共七位,这意味着最多能有七位有效数字。需要注意的是,这个七位是包括整数位在内的所有位数。举个例子,假设小数点前有三位,那它只能精确到小数点后四位。
float a=0.123456f;
float b=789.123456f;
打印a和b的结果分别是0.123456和789.1235
浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,因为它是不变的,故不能对精度造成影响。所以我们常说float能精确到小数点后六位,是在其整数位为1的情况下才成立。