一、背景
今日、在庫消費(インベントリ/総在庫の消費)の百分率の計算にエラーが発生し、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()); }