无法弄清楚答案是如何成真的

时间:2014-12-07 12:55:41

标签: c

无法弄清楚怎么回事: 0.7 >0.7是真的。看起来是一个棘手的问题。

    void main()
float a=0.7;`

if(a < 0.7)`
{
     printf("TRUE");
}   

    else
    {
         printf("FALSE");
    }
}

1 个答案:

答案 0 :(得分:3)

这是因为变量afloat,而常量0.7double。浮点类型中0.7的表示不精确。当值转换为float时,结果会略微小于double值。这种差异可能是双向的,即float表示可能会比转换后的相应double略大。

添加演员表可以解决问题:

if(a < (float)0.7) {
     printf("TRUE");
} else {
     printf("FALSE");
}