如何浮动和双重比较?

时间:2014-04-01 15:12:51

标签: c

float x=1.1;

if(x==1.1) //This condition evaluates to false, since a float is being compared to a double.

float x=1.25;

if(x==1.25) //This condition evaluates to true, since 1.25 is not a recurring binary number.

但是,我想知道实际比较floatdouble的方式?

float是否已提升为double(通过添加前导0)然后进行比较?

2 个答案:

答案 0 :(得分:6)

首先,您不应该将浮点数与完全相等进行比较,因为它具有很高的失败风险。与往常一样,请参阅WECSSKAFPA

最好计算数字之间的绝对距离,并将其与某个阈值进行比较。

要回答您的第二个问题,是的,float会提升为double,但当然不能添加float中缺少的实际数字。此外,通过“添加前导0”不会进行促销,有关详细信息,请参阅floatdouble的二进制表示。

答案 1 :(得分:0)

在这两种情况下,float都会提升为double。在一种情况下,您巧合地获得true - 该数字完全由计算机表示。在另一种情况下,您将获得false,因为计算机并不完全代表它。