前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java.lang.ArithmeticException:Non-terminating decimal expansion,no exact representble decimal result

java.lang.ArithmeticException:Non-terminating decimal expansion,no exact representble decimal result

作者头像
botkenni
发布2021-07-29 12:37:33
5680
发布2021-07-29 12:37:33
举报
文章被收录于专栏:IT码农IT码农

java.lang.ArithmeticException:Non-terminating decimal expansion,no exact representble decimal result

异常信息

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

从上面的异常信息可以看出是在进行decimal 类型的计算时候出错了,代码如下

if(yearincome!=null){ BigDecimal num = new BigDecimal(12.00); BigDecimal monthIncom = yearincome.divide(num); mainLoanMessageVO.setMonthIncome(monthIncom); } 因为BigDecimal类型的计算需要使用divide函数,没有指定精确到小数点后几位造成的,导致不能整除而出现无限循环,这时候查看divide方法

* @param divisor value by which this {@code BigDecimal} is to be divided. 需要进行计算的值 * @param scale scale of the {@code BigDecimal} quotient to be returned. 需要返回的商的小数点位数 * @param roundingMode rounding mode to apply. roundingMode适用的舍入模式 public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 解决方法,设置返回小数点位和舍入模式 即可

if(yearincome!=null){ BigDecimal num = new BigDecimal(12.00); BigDecimal monthIncom = yearincome.divide(num,2,BigDecimal.ROUND_HALF_UP); mainLoanMessageVO.setMonthIncome(monthIncom); }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java.lang.ArithmeticException:Non-terminating decimal expansion,no exact representble decimal result
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档