在《C Primer Plus》第 6 版 3.3.3 节 浮点数的介绍中,作者说浮点数通常只是实际值的近似值,例如,7.0可能被储存为浮点值6.99999。
如果采用32位的IEEE 754浮点表示形式来存储7.0,那么它的二进制表示将如下:
这是一个精确表示,为什么说可能会被储存为6.99999呢?
被储存为6.99999的意思应该是它们在计算机中的二进制表示是一样的。
从十进制值上看,7.0和6.99999是不会相等的,但是0.99999无法使用精确的二进制表示,而浮点数在计算机中的表示又是有精度的,也就是有有效位数,它不可能表示出一个无限循环的数。所以在一定精度内,7.0和6.99999的二进制表示是可能相等的。
所以说,浮点数只是实际值的近似值,在一定误差内的两个浮点数可以认为是相等的。