ホームページ >Java >&#&チュートリアル >Java で Double 値を正確に比較するにはどうすればよいですか?

Java で Double 値を正確に比較するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 18:57:21589ブラウズ

How Can I Accurately Compare Double Values in Java?

Java での Double 値の効果的な比較

Java では、等価演算子 (==) を使用して 2 つの Double 値を比較すると、予期しない結果が生じる可能性がありますこれは、浮動小数点演算に固有の精度制限があるためです。これを克服するには、double 値を効果的に比較するための代替アプローチを採用することが重要です。

次の例を考えてみましょう:

double a = 1.000001;
double b = 0.000001;

boolean result = (a - b) == 1.0;

驚くべきことに、この比較は、直感的には false であるはずであるにもかかわらず、false と評価されます。真実。これは、減算演算 (a - b) の結果が 0.9999999999999999 となり、1.0 よりわずかに小さいためです。

この問題に対処するための、より堅牢なアプローチは、誤差範囲 (デルタ) を採用することです。値は等しいと見なすことができます。これを実装する 1 つの方法は Math.abs():

double a = 1.000001;
double b = 0.000001;
double delta = 0.000001;

boolean result = Math.abs(a - b - 1.0) <= delta;

を使用することです。この場合、(a - b) と 1.0 の間の絶対差が事前定義されたデルタ 0.000001 以下である場合、比較は true と評価されます。このアプローチにより、潜在的な精度誤差を考慮しながら、より正確な比較が可能になります。

以上がJava で Double 値を正確に比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。