解决方案是应该向下面这样设置小数点后的位数,以及超出后是四舍五入和向上/向下取整或者直接舍弃:
System.out.println(bd4.divide(bd5,2,BigDecimal.ROUND_DOWN));
【bigdecimal除法取整的方法 bigdecimal保留整数】第二个参数表示小数位数,第三个参数表示超出的位数直接舍弃(当然也可以设置四舍五入,向上取整等)
三. 不要使用BigDecimal的equals方法比较大小, 否则可能会因为精度问题导致比较结果和预期的不一致 BigDecimal bd1 = new BigDecimal("0");BigDecimal bd2 = new BigDecimal("0.0");System.out.println(bd1.equals(bd2));System.out.println(bd1.compareTo(bd2) == 0)
输出结果:
equals:falsecompareTo:true
如果你无法确定你的BigDecimal值有小数情况,最好用compareTo!
四. stripTrailingZeros科学计数法问题 stripTrailingZeros()方法可以方便地去掉bigdecimal类型的小数点末尾的0,但是如果整数部分的末尾也有0的话就会转成科学计数法格式,如下代码所示:
BigDecimal bd1 = new BigDecimal("1000.00");System.out.println(bd1);System.out.println(bd1.stripTrailingZeros())
输出结果:
1000.001E 3
相信大部分情况下这种格式都不是我们想要的,所以这时需要带调用一下toPlainString()方法处理成正常的格式,如下代码所示:
BigDecimal bd1 = new BigDecimal("1000.00");System.out.println(bd1);System.out.println(bd1.toPlainString())
输出结果:
1000.001000
这样就达到了即可以去除小数末尾多余的0,又展示正常格式的目的 。
推荐阅读
- 怎么去除衣服上的铁锈
- 自行车车把生锈了怎么办
- 361÷9列竖式怎么列 除法列竖式口诀
- 利用计算机读取整茶色泽参数的方法研究
- 荣耀手机声音怎么放大 怎么声音那么小教你4种排除法!
- 撕强力胶的方法 如何撕强力胶
- 二年级下学期数学除法怎么讲解 可以这样讲解
- 数学常识中什么是除法 除法的含义
- 去掉鱼骨方法 这两种方法最常用
- 紧致法龄纹的方法 消除法令纹的方法