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

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

Susan Sarandon
リリース: 2024-12-22 05:11:14
オリジナル
482 人が閲覧しました

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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート