我在D中使用OpenGL编写3D游戏,我遇到了浮点问题。当我将零除以另一个浮点值(非零)时,它将始终为NaN而不是0.这导致麻烦感觉NaN将在整个代码传感中传播,其他任何分割/乘以它的东西也变为NaN。我真的不想用if value != 0.0f
支票包裹我所有的部门。
如果float value = getCurrentSpeed() / getMaxSpeed()
返回0.0f,则getCurrentSpeed()
之类的简单检查将返回NaN。
答案 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 / y
和x
都不是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 }}