Java での Double 値の比較: 精度エラーへの対処
Java での Double 値の比較は、精度エラーが発生する可能性があるため、難しい作業となる場合があります。以下に示すような単純な比較では、予期しない結果が生じる可能性があります。
double a = 1.000001; double b = 0.000001; boolean result = (a - b == 1.0); // False
減算演算の結果は 0.9999999999999999 となり、厳密には 1.0 と等しくないため、このコードは false を出力します。この問題を解決するには、より正確な比較方法が必要です。
1 つのアプローチは、2 つの値間の絶対差を計算し、それを小さな許容値と比較することです。例:
double c = Math.abs(a - b - 1.0); boolean result = (c <= 0.000001); // True
このコードでは 0.000001 の許容誤差が導入されているため、c と 1.0 の絶対差がこの範囲内にある限り、比較は true と評価されます。 Math.abs() メソッドは、符号の違いを無視して絶対値が考慮されることを保証します。
この手法を使用することで、潜在的な精度誤差を考慮し、double 値の信頼できる比較を実行できます。このアプローチは、正確な等価比較が必ずしも現実的ではない浮動小数点データを扱う場合に特に役立ちます。
以上がJava で Double 値を確実に比較し、精度エラーを回避する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。