这里用到了两个方法,特记录一下
.divide
new BigDecimal(a).divide(new BigDecimal(b), 2, RoundingMode.HALF_UP);
.divide(new BigDecimal(b), 2, RoundingMode.HALF_UP)
:对第一个 BigDecimal
对象 (表示的值是 a
)除以第二个 BigDecimal
对象(表示的值是 b
)
2
表示保留小数点后两位
RoundingMode.HALF_UP
表示四舍五入模式。在这种模式下,当小数点后第二位的小数等于 5 时,会向上舍入(即向更大的数舍入)
所以,这段代码的作用是将 a
除以 b
,并保留小数点后两位,采用四舍五入模式
这里会导致在除法时会出现明明可以除但是结果为0的情况,加入下述.setScale
即可解决
.setScale
考虑使用 setScale
方法来设置保留的小数位数和舍入模式
new BigDecimal(a).setScale(2, RoundingMode.HALF_UP).divide(b, RoundingMode.HALF_UP);
这个示例中,使用和 setScale
方法进行除法运算
2
表示保留小数点后两位
RoundingMode.HALF_UP
表示四舍五入模式