在上面的“浮动i = 0.7”初始化之后,“i <0.7”是真的吗?

时间:2012-11-27 18:18:27

标签: c++ c

  

可能重复:
  Floating point comparison

#include<stdio.h>
#include<conio.h>
int main()
{
float i=0.7;
clrscr();
if(i < 0.7)
     printf("If Block");
else
     printf("Else Block");
getch();
return 0;
}

我不明白whay输出会是“If block”.....请帮助为什么if部分被执行?

1 个答案:

答案 0 :(得分:13)

实际上i0.69999999998的浮动表示。

当你在内存中分配i=0.7时,无法像你想象的那样在double precision中表示0.7。

因此,floatdouble之间的比较会导致类型提升,在这种情况下,i小于0.7,这是双倍的。