为什么浮动值比较失败?
问题描述:
在下面的例子中,出把显示的是假为什么浮动值比较失败?
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
但是,如果使用整数,而不是其浮动放出来为True 可能是什么原因?
答
if (f == 0.1)
这里,0.1
是double
类型不float
类型。表达式f == 0.1
在右侧存在双精度值,它们存储在Double-precision floating-point format中,而浮点数存储在左侧的single precision floating point format中。双精度格式比单精度格式使用更多的位精度。
如果你想回答True,那么在0.1
文字末尾指定f
。
float f = 0.1;
if (f == 0.1f)
printf("True");
else
printf("False");
或者
if (f == (float)0.1)
你可以只写文字为'0.1f'得到_more_ ** **的机会比较成功 –
使用谷歌卢克。 –
如果您使用整数,那么这两个值都是零。这不关你吗? – EJP