为什么C语言中double形式不能比较?

2025-03-10 11:45:06
推荐回答(2个)
回答1:

不是不能比较,只是在比较两个double型数是否相等时,形式要注意。
对于整型,比如 int a, b; 比较 a 和 b 是否相等时用 a == b,但是对于double型的数,比如 double c, d; 应该用 fabs( a - b ) < 0.00001 来比较是否相等。这里的0.00001并不是固定的,反正是一个很小的数就行了。就是看 c 和 d 的差的绝对值是否非常小

因为 C 语言的 double 型数据是根据 IEEE 754 标准(你到维基百科上可以搜到这个标准的详细内容)来存储的,导致大部分数载存储时存在截断误差,所以用 == 来进行比较时可能会得不到正确的结果

回答2:

double形式是不能和0比较的,因为double实际上是没有0这个数的,只有无限接近于0的数。