为什么123456788+1不等于123456789? 28 次浏览 尽管整数计算求和确实是等于,但如果把求和存放在32位float变量,却等于123456792. 原因在于float最多只能有7位有效数字,注意并不是7位有效小数点,是包含整数部分和小数部分总共有效位数是7! int i = 123456788, j = 1;float f = i + j; // 不等于123456789 32位浮点数按照IEEE754标准规定,二进制格式最多是23位小数点,1 << 23 等于8388608,对应十进制最多有7位有效数字。