异常"/>
BigDecimal divide异常
异常报错信息:Non-terminating decimal expansion; no exact representable decimal result.
java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
问题原因:通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
解决办法:给divide方法设置精确的小数点,如:divide(xxxxx,2)。
其实devide的函数定义如下
BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;
scale为小数位数;
roundingMode为小数模式,模式如下:
ROUND_CEILING
从不在舍弃(即截断)的小数之前增加数字。
ROUND_FLOOR若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_UNNECESSARY
ROUND_UP
写成如下便可通过
BigDecimal num3 = num1.divide(num2,10,RoundingMode.ROUND_CEILING);
更多推荐
BigDecimal divide异常
发布评论