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.
Run Code Online (Sandbox Code Playgroud)
但是,我想知道a float和a double实际上是如何比较的?
是float提升到一个double(加入前导零),然后进行比较?
首先,您永远不应该将浮点数与完全相等进行比较,因为它具有很高的失败风险.一如既往,请参阅WECSSKAFPA.
最好计算数字之间的绝对距离,并将其与某个阈值进行比较.
要回答你的第二个问题,是的,float它被提升为double,但当然不能添加从一float开始就缺少的实际数字.此外,通过"添加前导0"不会发生促销,有关详细信息,请参阅floatvs 的二进制表示double.