私のプロジェクトには、次のように、2 つの double 値を比較して差が 0 を超えているかどうかを確認するコードがいくつかありました。
if (totValue != 1.0)
Resharper はこれについて不満を述べ、"EPSILON" を使用する必要があることを提案し、そのような定数をコードに追加しました (そうするように求められた場合)。ただし、定数自体を作成したり、その値を提案したりすることはありません。これは良い解決策ですか:
const double EPSILON = double.Epsilon; // see http://msdn.microsoft.com/en-us/library/system.double.epsilon.aspx
. . .
if (Math.Abs(totValue - 1.0) > EPSILON)
compValue = Convert.ToString(totValue*Convert.ToDouble(compValue));
?
アップデート
私はこれを次のように変更しました:
const double EPSILON = 0.001;
...おそらく、典型的な二重値で機能するのに十分な大きさと小ささの両方であると考えています(科学的なものではなく、「これらを2.5個持っている」など)