BigDecimal除法运算出现java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result的解决办法
今天在使用两个BigDecimal类型的数字做除法运算时,出现了一个如下的异常信息:
1 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)。
对于常用的加,减,乘,除,BigDecimal类提供了相应的成员方法。
public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value); //减法
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法
roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,
setScale(2,BigDecimal.ROUND_XXXX_XXX)); 是 2,则