C语言中关系运算符的求值
下面给出的是C语言中的一段代码C语言中关系运算符的求值,c,operators,relational,C,Operators,Relational,下面给出的是C语言中的一段代码 float k=0.6; if(k==0.6) printf("yes they are equal"); else printf("no they are not equal"); 上面的代码没有给出输出,因为它们不相等。我正在使用Ubuntu12.04GCC4.4 我很惊讶,并调试了这个程序。 答案是否定的,因为K的值不等于0.6。我在gdb中单步执行程序,发现k的值为0.600000024。现在我的问题是为什么0.60000024被分配给k,为什
float k=0.6;
if(k==0.6)
printf("yes they are equal");
else
printf("no they are not equal");
上面的代码没有给出输出,因为它们不相等。我正在使用Ubuntu12.04GCC4.4
我很惊讶,并调试了这个程序。
答案是否定的,因为K的值不等于0.6。我在gdb中单步执行程序,发现k的值为0.600000024。现在我的问题是为什么0.60000024被分配给k,为什么不是0.6。当我指定0.7时,k的值为0.6999998。
为什么会发生这种情况?正确。如果在C中使用浮点值,则必须使用一组差分 你可以用
DBL_EPSILON of the Header float.h
if ((k - 0.6) < DBL_EPSILON){ ... }
答案是否定的,因为K的值不等于0.6。我在gdb中单步执行程序,发现k的值为0.600000024。0.6的类型不是浮点型,而是双精度型。某处有一个复制品,谢谢。我将阅读更多关于浮点的内容