ホームページ >Java >&#&チュートリアル >Java で Double を使用して計算するときに丸めエラーを回避するにはどうすればよいですか?

Java で Double を使用して計算するときに丸めエラーを回避するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 05:11:14476ブラウズ

How Can I Avoid Rounding Errors When Calculating with Doubles in Java?

Java の二重丸めの問題の解決

Java では、倍精度浮動小数点数を使用して計算を実行すると、次の理由により予期しない結果が生じることがあります。丸め誤差。この問題に対処するには、Java の浮動小数点演算を理解し、適切な解決策を採用することが不可欠です。

double 値を減算すると、小さな丸め誤差が蓄積し、その結果、計算が不正確になる可能性があります。次のコード スニペットを考えてみましょう:

double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
double netToCompany = targetPremium.doubleValue() - tempCommission;
double dCommission = request.getPremium().doubleValue() - netToCompany;

この例では、予想されるコミッション結果は 877.85 ですが、丸め誤差により計算では 877.8499999999999 となります。

解決策: BigDecimal を使用する

正確性を確保するため計算には、java.math.BigDecimal を使用することをお勧めします。このクラスは、double データ型の制限に対処する高精度浮動小数点演算を提供します。

BigDecimal を使用してコードの最後の行を書き直す:

BigDecimal commission = premium.subtract(netToCompany);

このアプローチにより、丸め誤差が排除され、正しい結果が生成されます。結果:

System.out.println(commission + " = " + premium + " - " + netToCompany);

出力:

877.85 = 1586.6 - 708.75

以上がJava で Double を使用して計算するときに丸めエラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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