ArithmeticException - 没有可确切表示的小数结果
【摘要】
ArithmeticException - 没有可确切表示的小数结果
@本文章运行于Java 8下
ArithmeticException: Non-terminating decimal exp...
ArithmeticException - 没有可确切表示的小数结果
@本文章运行于Java 8下
ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
- 在什么情况下抛出该异常
BigDecimal a = new BigDecimal("1.6");
BigDecimal b = new BigDecimal("9.2");
a.divide(b)
2.引发该异常的原因
1.BigDecimal 是一个由用户完全控制舍入行为的类,如果用户没有明确知道舍入模式,则抛出异常。
2.如果把MathContext 精度设置为0,则不会出现精度问题,因为该设置将不会使用精度计算,也就是不保留小数位。
3.Java 5 之前只支持这个行为,但是如果你指定了舍入模式,你就必须指定你期待的一个精度。比如,当出现无限小数的时候,将会抛出异常,所以,你必须指定你需要的精度以及舍入模式。
3.如何解决该异常
// 指定保留2位小数,使用HALF_UP 的舍入模式
a.divide(b, 2, RoundingMode.HALF_UP)
文章来源: wretchant.blog.csdn.net,作者:简简单单OnlineZuozuo,版权归原作者所有,如需转载,请联系作者。
原文链接:wretchant.blog.csdn.net/article/details/80886155
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)