一般的な時分割動作のjava.lang.ArithmeticException例外:非終了小数膨張; NO正確な表現小数点結果。

一、背景

今日、在庫消費(インベントリ/総在庫の消費)の百分率の計算にエラーが発生し、java.lang.ArithmeticException 10進展開非終了、その結果NO正確な表現小数。

例外を説明することによって、我々はそれ以外の場合は上記の例外がスローされます、いくつかのシナリオでは、などの1/3は無限小数を取得するには、ので、これは、あなたが結果を定義する必要があり、この時間は、いくつかの小数点以下の桁に予約することがわかっています。

第二に、この方法は、導入します

この方法は、異常発生を使用する、この方法の精度が設定されていません。

公共BigDecimalを除算(BigDecimalを除数) 

除算演算を行う場合、我々は、精密制御に次のアプローチを使用する必要があります。

公共BigDecimalを除算(BigDecimalの除数、INTスケール、int型roundingMode)

PS:分母が0であるかを決定することを忘れないでください。   

三、次のように

BigDecimalの新しい新しいB1 = BigDecimalを(1); 
BigDecimalのBigDecimalの新しい新B2 =(3); 
{IF(!Objects.equals(B2、BigDecimal.ZERO))
    //割り切れない、数学的に無限小数、はArithmeticException例外がスローされます
    // B3 = BigDecimalを(B2)b1.divide; 
    //指定された精度の計算結果、小数点以下のいくつか、および丸めモード
    のBigDecimal b1.divideのB3 =(B2 ,. 4、BigDecimal.ROUND_HALF_UP)
    のSystem.out.println (b3.toEngineeringString()); 
}  

  

おすすめ

転載: www.cnblogs.com/lingyejun/p/11588685.html