bigdecimal除法取整的方法 bigdecimal保留整数( 二 )


解决方案是应该向下面这样设置小数点后的位数,以及超出后是四舍五入和向上/向下取整或者直接舍弃:
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,又展示正常格式的目的 。

推荐阅读