将零除以值时防止NaN

时间:2015-11-17 12:29:47

标签: floating-point d nan

我在D中使用OpenGL编写3D游戏,我遇到了浮点问题。当我将零除以另一个浮点值(非零)时,它将始终为NaN而不是0.这导致麻烦感觉NaN将在整个代码传感中传播,其他任何分割/乘以它的东西也变为NaN。我真的不想用if value != 0.0f支票包裹我所有的部门。

如果float value = getCurrentSpeed() / getMaxSpeed()返回0.0f,则getCurrentSpeed()之类的简单检查将返回NaN。

1 个答案:

答案 0 :(得分:1)

划分时,比如$exists= Test-Path $resultFile $a = 1 if ($exists -eq "False") { do { $a++ log "Now `$a is $a " start-sleep -s ($a) $exists= Test-Path $resultFile write-host "exists = $exists" } while (($a -le 5) -and ($exists -ne "True")) } ,您可以获得四个结果(前提是x / yx都不是y):

NaN, +Inf, Inf

所以在你的情况下 - 0 when y != 0 -- <- expected +Inf x > 0 and y == 0 -Inf x < 0 and y == 0 NaN x == 0 and y == 0 -- <- actual 计算时

NaN

我们可以得出结论 float value = getCurrentSpeed() / getMaxSpeed() getCurrentSpeed()都是 zeros ,你必须测试getMaxSpeed()是{{1 }}