Java での二重比較の不一致への対処
単純な等価性チェックを使用して Java で 2 つの double 値を比較すると、固有の理由により予期しない結果が生じる可能性があります。浮動小数点演算の制限。この課題を克服するには、別のアプローチが必要です。
一般的な実装では、(a - b) == 1.0 などの 2 つの double の単純な比較は、期待される差が無視できる場合でも false を返す可能性があります。浮動小数点の計算では丸め誤差が生じる可能性があるためです。
double をより正確に比較するための推奨戦略は、Math.abs() メソッドを使用して 2 つの値間の絶対差を計算することです。
たとえば、次のコード スニペットでは、このアプローチを使用して double 値 a と b を比較します。
double a = 1.000001; double b = 0.000001; double tolerance = 0.000001; boolean areEqual = (Math.abs(a - b) <= tolerance); System.out.println(areEqual); // Prints true
適切な許容誤差を設定することにより、値 (この例では 0.000001 など) を使用すると、2 つの double の差が実用上等しいと見なすのに十分小さいかどうかを判断できます。このアプローチにより、double 値のより正確かつ一貫した比較が可能になり、完全な等価性チェックの落とし穴を回避できます。
以上が不一致を避けるために Java で Double 値を正確に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。