【发布时间】:2017-02-21 18:37:38
【问题描述】:
我在使用 Big Decimal 及其舍入后的格式时遇到问题。我的输入价格为 35.90,输出返回 35.9
这就是我四舍五入的方式:
BigDecimal scaledResult = rs.getPrice().setScale(2, BigDecimal.ROUND_HALF_UP);
sc.setPrice(scaledResult);
即使我已将比例设置为小数点后两位,它也会返回 35.9 输出。有任何想法吗?
【问题讨论】:
-
这不是舍入问题(如 35.9 == 35.90),这是格式问题。
-
当你说它返回 35.9,你是什么意思?你在某处输出结果?
-
打印
scaledResult.toString()的结果会得到什么? -
API?客户端?在某处,您以某种方式从
BigDecimal转换为字符串表示以获得“35.9”。这就是你的问题所在。如果没有minimal reproducible example,我们真的不能说更多。 -
所以你的 BigDecimal 值是正确的......也许 API 不保持你的 BigInteger 的规模?尝试向 API 传递一个值,例如
new BigDecimal("12.30")... 如果这不起作用,那么问题出在 API 本身...
标签: java currency bigdecimal price