尤其是浮点数比较的问题,不只是0,类似的和其他的浮点数比较大小的问题也是一样的。 要解决这个疑惑,必须先理解计算机是如何表示和存储浮点数据的,期间参考了IEEE单双精度的规范文档,和MSDN的一些文档,以及《深入理解计算机操作系统》一书。 这样的结果在不同机器或者编译器下,有可能不同,但是能说明一个问题,浮点数...
浮点数的比较还是要根据实际存储规则来,因为浮点数是以二进制来存储的,而用二进制表示十进制是不能精确表示的,即使浮点数的十进制有效数字比较少,那也不一定能用二进制精确表示。为什么呢?首先浮点数小数位的二进制是这样对应的:小数后1位:0.5 (2^-1)小数后2位:0.25 (2^-2)...小数位n位:2^-n也就是说...