下面是一段C代码
float k=0.6;
if(k==0.6)
printf("yes they are equal");
else
printf("no they are not equal");
上面的代码给出输出“不,它们不相等”。我正在使用 Ubuntu 12.04 gcc 4.4
我很惊讶并调试了程序。 答案是否定的,因为K的值不等于0.6。我在 gdb 中单步执行该程序,发现 k 的值为 0.600000024。现在我的问题是为什么将 0.600000024 分配给 k 而不是 0.6。当我分配 0.7 时,k 的值为 0.69999998。 为什么会出现这种情况?
最佳答案
正确。如果您在 C 中使用浮点值,则必须使用设定的差异。
你可以使用
DBL_EPSILON of the Header float.h
if ((k - 0.6) < DBL_EPSILON){ ... }
关于c - 评估 C 中的关系运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495631/