相关疑难解决方法(0)

比较C中的浮点数

我有一个double打印出来0.000000,我试图比较它0.0f,但没有成功.为什么这里有区别?什么是最可靠的方法来确定你的双倍是零?

c floating-point comparison zero

16
推荐指数
1
解决办法
1万
查看次数

浮点数,我可以信任多于/大于比较?

假设我有两个浮点数,我想比较它们.如果一个大于另一个,程序应该采用一个分叉.如果情况恰恰相反,那么应采取另一条道路.并且它应该做同样的事情,如果被比较的值被轻微地推向一个方向,仍然应该比较真实.

这是一个难以解释的问题,所以我写这篇文章来证明它 -

float a = random();
float b = random();  // always returns a number (no infinity or NaNs)

if(a < b){
    if( !(a < b + FLOAT_EPISILON) ) launchTheMissiles();
    buildHospitals();

}else if(a >= b){
    if( !(a >= b - FLOAT_EPISILON) ) launchTheMissiles();
    buildOrphanages();

}else{
    launchTheMissiles();  // This should never be called, in any branch
}
Run Code Online (Sandbox Code Playgroud)

鉴于此代码,launchTheMissiles()保证永远不会被调用?

c++ floating-point

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

floating-point ×2

c ×1

c++ ×1

comparison ×1

zero ×1