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.
但是,我想知道实际比较float
和double
的方式?
float
是否已提升为double
(通过添加前导0)然后进行比较?
答案 0 :(得分:6)
首先,您不应该将浮点数与完全相等进行比较,因为它具有很高的失败风险。与往常一样,请参阅WECSSKAFPA。
最好计算数字之间的绝对距离,并将其与某个阈值进行比较。
要回答您的第二个问题,是的,float
会提升为double
,但当然不能添加float
中缺少的实际数字。此外,通过“添加前导0”不会进行促销,有关详细信息,请参阅float
与double
的二进制表示。
答案 1 :(得分:0)
在这两种情况下,float
都会提升为double
。在一种情况下,您巧合地获得true
- 该数字完全由计算机表示。在另一种情况下,您将获得false
,因为计算机并不完全代表它。