如何浮动和双重比较?

use*_*198 1 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.
Run Code Online (Sandbox Code Playgroud)

但是,我想知道a float和a double实际上是如何比较的?

float提升到一个double(加入前导零),然后进行比较?

unw*_*ind 6

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

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

要回答你的第二个问题,是的,float它被提升为double,但当然不能添加从一float开始就缺少的实际数字.此外,通过"添加前导0"不会发生促销,有关详细信息,请参阅floatvs 的二进制表示double.