Real numbers comparison
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Comparing floating point values
How dangerous is it to compare floating point values?
号
我不明白,为什么实数比较是编程中的一个坏习惯?当然,我知道实数可以用一定的精度来表示。你能给我解释一下不比较这类数字的重要原因吗?例子会很好,文章也很受欢迎。事先谢谢。
从本网站
并引用了大卫戈德伯格的《每一个计算机科学家应该知道的关于浮点运算的知识》。这是一个简短的总结。
1。精确的浮点结果不可移植
浮点运算既不是交换的,也不是结合的。大多数编译器和平台遵循的IEEE754标准并不保证结果的精确再现性。此外,不同处理器上的结果也会有所不同。
2。浮点比较与数学不符
考虑以下陈述
1 2 | int i = 0; double x = 1.0; while (x != 0.0) { x = x/2 ; i++;} |
在实数中,此计算永远不会完成,但在浮点中,它将终止。
三。为什么浮点比较在硬件中实现?
有些地方需要精确的浮点相等。一个是浮点数的规范化。