在浮点数运算过程中,10.0乘以0.1一定等于1.0。( )
计算机中的浮点数并不能完全精确表示。例如,对于一个double型的38414.4来说,计算机是这样存储它的:
转成二进制:1001011000001110.0110011001100110011001100110011001100
转成科学计数法:1.0010110000011100110011001100110011001100110011001100×2^15
double型编码格式是这样的:
double 符号位1位 阶码11位 尾数52位
符号位:正数统一是0
阶码:15是正数,因此最高位是1,最低位减1,为10000001110
尾数:去掉最高位默认的1,为0010110000011100110011001100110011001100110011001100
组合起来,最终得到的编码是:0 10000001110 0010110000011100110011001100110011001100110011001100
从这里可以看出来,主要原因在于二进制编码使得小数部分无法完全精确表示,例如0.4 = 0.25 + 0.125 + ...,只能无限接近。所以在对浮点数做计算时会产生精度误差。