- 報(bào)錯(cuò):
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
- 報(bào)錯(cuò)語句:
a.divide(b));
- 原因:
JAVA中如果用BigDecimal做除法的時(shí)候一定要在divide方法中傳遞第二個(gè)參數(shù)屁魏,定義精確到小數(shù)點(diǎn)后幾位,否則在不整除的情況下伤柄,結(jié)果是無限循環(huán)小數(shù)時(shí)馍管,就會(huì)拋出以上異常船殉。
- 解決方法:
a.divide(b, 2, BigDecimal.ROUND_HALF_UP);
- 總結(jié):
注意這個(gè)divide方法有兩個(gè)重載的方法更振,一個(gè)是傳兩個(gè)參數(shù)的,一個(gè)是傳三個(gè)參數(shù)的:
//兩個(gè)參數(shù)的方法:
//傳入除數(shù)
@param divisor value by which this {@code BigDecimal} is to be divided.
//傳入round的模式
@param roundingMode rounding mode to apply.
//三個(gè)參數(shù)的方法:
//傳入除數(shù)
@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.