BigDecimal 在实例化时 值为double 类型,实例化的结果会变小,例如
BigDecimal bigDecimal = new BigDecimal(0.15).setScale(2, BigDecimal.ROUND_DOWN)
实际输出的结果会是 0.14,但是如果实例化 1.151,结果就是0.15,这是因为double类型精度缺失造成的
解决办法,实例化用字符串
BigDecimal bigDecimal = new BigDecimal("0.15").setScale(2, BigDecimal.ROUND_DOWN);
需要double可以类型的话可以使用bigDecimal.doubleValue()转换。
评论区