#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.5
在IEEE-754二进制格式(例如binary32和binary64)中具有精确的表示形式。0.5
是两个的负数。0.6
另一方面不是2的幂,不能用float
或精确表示double
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句