今日、私はいくつかのC ++コード(他の誰かによって書かれた)を調べていて、このセクションを見つけました:
double someValue = ...
if (someValue < std::numeric_limits<double>::epsilon() &&
someValue > -std::numeric_limits<double>::epsilon()) {
someValue = 0.0;
}
私はこれが理にかなっているのかどうかを理解しようとしています。
のドキュメントは次のようにepsilon()
述べています。
この関数は、1と、[doubleで]表現可能な1より大きい最小値との差を返します。
これは0にも当てはまりますか?つまりepsilon()
、最小値は0より大きいですか?0
または、との間に数字があり、それは?0 + epsilon
で表すことができますdouble
か?
そうでない場合、比較は?と同等ではありませんsomeValue == 0.0
か?