以下是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。 为什么会这样?
答案 0 :(得分:0)
正确。如果您正在使用C中的浮点值,则必须使用设置差异。
您可以使用
DBL_EPSILON of the Header float.h
if ((k - 0.6) < DBL_EPSILON){ ... }