ホームページ >Java >&#&チュートリアル >Java の倍精度演算での精度エラーを回避するには?
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 サイトの他の関連記事を参照してください。