ホームページ >Java >&#&チュートリアル >Java の倍精度演算での精度エラーを回避するには?

Java の倍精度演算での精度エラーを回避するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-10 00:38:08316ブラウズ

How to Avoid Precision Errors in Java Double Arithmetic?

Java の二重演算の精度の問題を解決する方法

特定のシナリオでは、Java の浮動小数点演算により予期しない丸めの問題が発生する可能性があります。提供されている減算の例のように:

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

ここでは、 dCommission の望ましい結果は 877.85 ですが、代わりに 877.8499999999999 として計算されます。この不一致は、浮動小数点演算の精度制限により発生します。

この問題を解決するには、java.math.BigDecimal クラスを使用するのが最適な解決策です。 BigDecimal は正確な計算を提供し、浮動小数点演算の精度を効果的に制御します。指定された例でこれを実装する方法は次のとおりです:

import java.math.BigDecimal;

BigDecimal premium = BigDecimal.valueOf("1586.6");
BigDecimal netToCompany = BigDecimal.valueOf("708.75");
BigDecimal commission = premium.subtract(netToCompany);
System.out.println(commission + " = " + premium + " - " + netToCompany);

このコードの結果、目的の出力が得られます:

877.85 = 1586.6 - 708.75

BigDecimal を採用することで、精度を損なうことなく正確な計算が保証されます。

以上がJava の倍精度演算での精度エラーを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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