#include<stdio.h>
int main()
{
float x = 0.6;
if (x == 0.6)
printf("IF");
else if (x == 0.6f)
printf("ELSE IF");
else
printf("ELSE");
}
此代码提供输出 ELSE IF
#include<stdio.h>
int main()
{
float x = 0.5;
if (x == 0.5)
printf("IF");
else if (x == 0.5f)
printf("ELSE IF");
else
printf("ELSE");
}
此代码提供输出 IF
尽管两个程序看起来都相同,但为什么输出有差异?为什么会这样?
答案 0 :(得分:6)
因为0.5
具有IEEE-754二进制格式的精确表示(如binary32和binary64)。 0.5
是2的负面力量。另一方面,0.6
不是2的幂,并且无法在float
或double
中完全表示。