在C中评估关系运算符

时间:2015-04-07 15:44:21

标签: c operators relational

以下是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。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

正确。如果您正在使用C中的浮点值,则必须使用设置差异。

您可以使用

DBL_EPSILON of the Header float.h
if ((k - 0.6) < DBL_EPSILON){ ... }