前言:
今天姐妹们对“java保留小数点后三位”都比较关心,同学们都需要知道一些“java保留小数点后三位”的相关资讯。那么小编也在网络上汇集了一些对于“java保留小数点后三位””的相关知识,希望我们能喜欢,我们一起来了解一下吧!一、背景
今天在计算库存消耗百分比(消耗的库存/总库存)的时候遇到了一个错误,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
通过异常的描述,我们知道这是因为,某些场景下对于如1/3会得到一个无穷小数,这个时候需要定义计算结果要保留到小数点后几位,否则就会抛出上面的异常。
二、方法介绍
出现异常时使用的方法,此方法没有精度设置。
public BigDecimal divide(BigDecimal divisor)
在进行除法运算的时候,我们需要使用下面的方法来进行精度控制。
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
附:不要忘记判断分母是否为0
三、代码如下
BigDecimal b1 = new BigDecimal(1);BigDecimal b2 = new BigDecimal(3);if (!Objects.equals(b2, BigDecimal.ZERO)) { // 不能整除,数学上是无穷小数,抛出ArithmeticException异常 //BigDecimal b3 = b1.divide(b2); // 指定计算结果的精度,保留到小数点后几位,以及舍入模式 BigDecimal b3 = b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP); System.out.println(b3.toEngineeringString());}
我是「翎野君」,感谢各位朋友的:点赞、收藏和评论,我们下期见。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java保留小数点后三位