欢迎光临
我们一直在努力

BigDecimal divide除法除不尽报错如何解决

这篇文章主要介绍“BigDecimal divide除法除不尽报错如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“BigDecimal divide除法除不尽报错如何解决”文章能帮助大家解决问题。

BigDecimal divide除法除不尽报错

用BigDecimal做除法的时候,直接拿起两数怼上除法有时候会出现除不尽就会报错

列如:

BigDecimal a = new BigDecimal(10);
BigDecimal re = a.divide(new BigDecimal(3));
System.out.println(re);

或:

BigDecimal a = new BigDecimal(10);
BigDecimal re = a.divide(new BigDecimal(3)).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(re);

直接这样除是会出现除不尽报错的

解决办法

除的时候直接截取位数就好了

BigDecimal a = new BigDecimal(10);
BigDecimal re = a.divide(new BigDecimal(3),2,BigDecimal.ROUND_HALF_UP);
System.out.println(re);

关于BigDecimal除法问题

BigDecimal做除法时

尽量使用divide(BigDecimal divisor, int scale, int roundingMode),这个方法

divisor:被除数 scale保留小数位数 roundingMode保留小数时采用的方法,一般使用BigDecimal.ROUND_UP(四舍五入)

如果不指定保留小数位数,在遇到除不尽的情况下就会报错

BigDecimal源码

try {
    quotient = this.divide(divisor, mc);
} catch (ArithmeticException e) {
    throw new ArithmeticException("Non-terminating decimal expansion; " +
                                  "no exact representable decimal result.");

关于“BigDecimal divide除法除不尽报错如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注云搜网行业资讯频道,小编每天都会为大家更新不同的知识点。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。