ホームページ > Java > &#&チュートリアル > Java で Double 値を確実に比較し、精度エラーを回避する方法

Java で Double 値を確実に比較し、精度エラーを回避する方法

Linda Hamilton
リリース: 2024-12-10 20:45:11
オリジナル
594 人が閲覧しました

How to Reliably Compare Double Values in Java and Avoid Precision Errors?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート