DoubleとIntを比較する最良の方法は何ですか? 質問する

DoubleとIntを比較する最良の方法は何ですか? 質問する

C# の次のコードは動作しません。

int iValue = 0;
double dValue = 0.0;

bool isEqual = iValue.Equals(dValue);

それで、質問です: Double と Int を比較する最良の方法は何でしょうか?

ベストアンサー1

浮動小数点値と整数値を単純に比較することはできません。特に、古典的な浮動小数点 表現の課題あなたができる次のように、一方から他方を減算して、その差が指定した精度より小さいかどうかを確認します。

int iValue = 0;
double dValue = 0.0;

var diff = Math.Abs(dvalue - iValue);
if( diff < 0.0000001 ) // need some min threshold to compare floating points
   return true; // items equal

自分にとって何を意味するのかを自分で定義する必要がありますequality。たとえば、浮動小数点値を最も近い整数に丸めて、3.999999981 が 4 に「等しい」ようにしたい場合があります。または、値を切り捨てて、実質的に 3 になるようにしたい場合もあります。すべては、何を達成しようとしているかによって異なります。

編集:例としてしきい値として 0.0000001 を選択したことに注意してください。比較に十分な精度は自分で決める必要があります。通常の表現境界内に収まる必要があることを認識してください。doubleこれは次のように定義されると思いますDouble.Epsilon

おすすめ記事