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™