BigDecimal:Non-terminating decimal expansion; no exact representable decimal result.

Java BigDecimal Divide

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

BigDecimal在执行divide,结果是除不尽的数字,比如10/3结果为3.333333...3循环,那BigDecimal将抛出此异常

比如:

BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("3");
num1.divide(num2); //无结果,抛异常

如果想要程序正确处理,则需要设置精度:

//10为保留小数位数,BigDecimal.ROUND_HALF_UP表示结果四舍五入
num1.divide(num2,10,BigDecimal.ROUND_HALF_UP); 

注意:使用BigDecimal做divide时,如果不能确定得到的结果一定不是除不尽的小数,则请指定精度及舍入规则

Copyright © 2017-01-12 XIAOZHUO.WANG™

你可能感兴趣的:(BigDecimal:Non-terminating decimal expansion; no exact representable decimal result.)