日常记录——对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】❤️❤️❤️,将会继续给大家带来【收获与惊喜】💕💕! 

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于日常记录——对BigDecimal除法运算时遇到的Bug的主要内容,如果未能解决你的问题,请参考以下文章

180706-BigDecimal除法的精度问题

BigDecimal进行除法运算时的坑

关于BigDecimal类型在jsp页面中进行除法运算问题

关于BigDecimal类型在jsp页面中进行除法运算问题

bigdecimal类型除法问题

日常记录