浮点数大小比较
浮点数的大小怎么比较,在网上看见与0判等的方法如下,谁能详细解释下,我看了浮点的IEEE754都还不能理解下面的是什么意思.和零比较的例子:
const float EPSINON = 0.00001;//此处根据精度定
if ((x >= - EPSINON) && (x <= EPSINON))
#include <stdio.h> int main() { double p = 0.1; double q = 0.10000000000000001; if (p == q) puts("=="); else puts("!="); return 0; }这个在我的机子上编译输出的是“==”。不知道在你那里是不是同样的结果。其实浮点数表示总有一定的误差的,这就使得本来不同的数变成了相同的(但由于误差不大,还可以接受),但本来可能相等的数,由于计算时有误差,可能没有得出完全相等的结果。如果你以某个值相等为循环目标,一个理论上可以结束的循环可能就成了无限循环,所以我们应该只是给出误差的限制,而不是要求完全相等。 如果你知道浮点数的内部表示,我觉得这个问题应该很容易理解。数值计算方面对这个问题也有很深入的讨论,还有截断误差(truncation error