日常记录——对BigDecimal除法运算时遇到的Bug
Posted 浅殇忆流年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日常记录——对BigDecimal除法运算时遇到的Bug相关的知识,希望对你有一定的参考价值。
📢📢📢📣📣📣
哈喽!大家好,今天给大家分享一篇最近在项目中遇到BigDecimal除法运算的时候出现的一次bug,希望对大家有所帮助和收获。
✨个人博客:https://blog.csdn.net/weixin_43759352✨
✨公众号:【SimpleMemory】✨
❤️❤️❤️如果有对【后端技术】感兴趣的大佬们,欢迎关注!!!❤️❤️❤️
最近在项目测试环境中,遇到这样一个问题;查看日志,报错信息如下:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1693)
通过定位发现:是在代码中使用BigDecimal 的divide方法时出现了异常。
检查发现:这是因为在BigDecimal 没有整除报的错误,因此我们需要向divide函数传入参数设置保留几位小数。
问题还原
下面通过一个测试代码演示没有整除的场景。
BigDecimal a = new BigDecimal(1);
BigDecimal b = new BigDecimal(3);
BigDecimal result = a.divide(b);
System.out.println("result = " + result);
处理办法
我们对其divide方法,设置参数传入几位小数,以及具体的取整模式即可。
BigDecimal result = a.divide(b,2,BigDecimal.ROUND_HALF_UP); // 保留两位小数、四舍五入
如果这篇【文章】对您有帮助,希望大家点赞、评论、关注、收藏;如果对【后端技术】感兴趣的小可爱,也欢迎关注❤️❤️❤️ 公众号【SimpleMemory】❤️❤️❤️,将会继续给大家带来【收获与惊喜】💕💕!
以上是关于日常记录——对BigDecimal除法运算时遇到的Bug的主要内容,如果未能解决你的问题,请参考以下文章