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

可能重复:
浮点比较

#include #include 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部分被执行?

实际上i在它的浮动表示中是0.69999999998

当您在内存中指定i=0.7 ,无法按照您的想法以double precision表示0.7。

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