int main()
{
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
}
我只是c的初学者。我不明白上述程序的行为。输出为false。为什么?
答案 0 :(得分:7)
0.1
是double
字面值。
由于0.1
无法完全以浮点表示,因此设置为0.1的float
会将false与double
设置为0.1进行比较。
如果您使用float
字面值0.1f
,请按照预期进行比较(请注意后缀f
:不要与变量名混淆):
float foo /*renamed for clarity*/= 0.1;
if (foo == 0.1f){
/*this will compare true*/