设置为0.1的浮点数将false与0.1进行比较

时间:2013-12-31 10:13:59

标签: c

 int main()   
    {
            float f = 0.1;
            if (f == 0.1)
                printf("True");
            else
                printf("False");
        }

我只是c的初学者。我不明白上述程序的行为。输出为false。为什么?

1 个答案:

答案 0 :(得分:7)

0.1double字面值。

由于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*/