2

精度エラーのため、変数をチェックして、常にある程度の許容範囲float内の値に等しくする必要があることを知っています。しかし、変数を手動で に設定した場合でも、それは何ですか?float0.0f

たとえば、距離を返す関数があります。

float distance()
{
    float value;
    if(/* ... */)
    {
        // ...
        return value;
    }
    else return 0.0f;
}

結果を安全に bool にキャストできますか?

if(distance())
{
   // ...
}
4

5 に答える 5

3

期待どおりの正確な値がある場合、その正確な値と比較しない理由はまったくありません。正確な値と比較するのが安全でないのは、計算を実行して不正確な結果が得られた場合のみです。また、一般に、浮動小数点計算では不正確な結果が得られると想定する必要があります。

あなたの場合、定数を返しているので、定数と比較しても安全です。

特異点を避けるために、正確な値と比較したい場合もあります。たとえば、x == 0.0 ? 1.0 : sin(x)/x.

于 2013-05-10T13:01:52.527 に答える