0.7不小于0.7但打印错误结果

时间:2014-08-23 03:01:15

标签: c comparison

这里'a'应打印为0.7< 0.7为假,但打印出“c”。

#include<stdio.h>
void main()
{
  float a=0.7;
  if(a<0.7)
    printf("c");
  else
    printf("a");
}

1 个答案:

答案 0 :(得分:0)

你似乎误解了浮点数。请参阅this question

你可以做的一件事就是“好吧,它永远不会完全 0.7,所以也许我无法判断,但我可以关闭。 ..

然后,你选择一个粒度,比如百万分之一。您可以尝试将ie6 * a整数舍入结果与1e6 * 0.7整数舍入结果进行比较,以查看“a < 0.7 }?“,但”a合理,足够接近,小于0.7?“

或者,只是比较相同的类型。正如评论中所述,0.7可能不是float字面值,而是double字面值。确保它是float文字以确定,并打印'a'

void main()
{
  float a=0.7;
  if(a<0.7f)
    printf("c");
  else
    printf("a");
}