BigDecimal 实例化后时BigDecimal.ROUND_DOWN或是RoundingMode.DOWN 值会变小

王小木
2021-08-19 / 0 评论 / 189 阅读
温馨提示:
本文最后更新于2021-08-19,若内容或图片失效,请留言反馈。

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()转换。