BigDecimal除算は例外をスローします

java.lang.ArithmeticException:非終了小数展開;正確に表現可能な小数結果例外ソリューションがない
シナリオの説明
今日、JAVAプログラムを作成すると、例外が発生しました:java.lang.ArithmeticException:非終了小数展開;正確に表現可能な小数展開小数結果。
エラーを見つけたステートメントは次のとおりです。

foo.divide(bar));

解決策
BigDecimalを使用してJAVAで除算する場合、divideメソッドで2番目のパラメーターを渡す必要があり、定義は小数点以下数桁まで正確です。そうでない場合、結果が無限ループの小数点以下の桁数になります。上記の例外が発生しました。

foo.divide(bar, 2, BigDecimal.ROUND_HALF_UP);

ソースコード
このBigDecimal除算メソッドには2つのオーバーロードされたメソッドがあることに注意してください。1つは2つのパラメーターを渡すことで、もう1つは3つのパラメーターを渡すことです。

2パラメータ方式:

@param divisor value by which this {
    
    @code BigDecimal} is to be divided. 传入除数

@param roundingMode rounding mode to apply. 传入round的模式

3つのパラメータの方法:

@param divisor value by which this {
    
    @code BigDecimal} is to be divided. 传入除数
@param scale scale of the {
    
    @code BigDecimal} quotient to be returned. 传入精度
@param roundingMode rounding mode to apply. 传入round的模式

おすすめ

転載: blog.csdn.net/CharlesYooSky/article/details/107341621