在上面的“浮动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。
所以float
和double
之间的比较导致了类型提升,在这种情况下, i
小于0.7
,这是双倍的。