BigDecimal的divide方法報錯

renke發表於2021-09-09
  • 報錯:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
  • 報錯語句:

a.divide(b));
  • 原因:

JAVA中如果用BigDecimal做除法的時候一定要在divide方法中傳遞第二個引數,定義精確到小數點後幾位,否則在不整除的情況下,結果是無限迴圈小數時,就會丟擲以上異常。

  • 解決方法:

a.divide(b, 2, BigDecimal.ROUND_HALF_UP);
  • 總結:

注意這個divide方法有兩個過載的方法,一個是傳兩個引數的,一個是傳三個引數的:

//兩個引數的方法://傳入除數@param divisor value by which this {@code BigDecimal} is to be divided. 
//傳入round的模式@param roundingMode rounding mode to apply. 

//三個引數的方法://傳入除數@param divisor value by which this {@code BigDecimal} is to be divided. 
//傳入精度@param scale scale of the {@code BigDecimal} quotient to be returned. 
//傳入round的模式@param roundingMode rounding mode to apply.



作者:Winter_Soldier
連結:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2806561/,如需轉載,請註明出處,否則將追究法律責任。

相關文章