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™

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容