【发布时间】:2018-07-30 22:30:07
【问题描述】:
请告诉我我犯的错误:
我有号码:225.0453,内部保存为 4 位数字。这是一个美元货币数字,我想要漂亮的打印出来显示。我用RoundingMode.HALF_EVEN
由于美元使用 2 位小数,因此四舍五入的数字应为 225.04 美元。但我得到 225.05 美元。
这是我的代码(我更改它以创建 MWE):
@Override
public String toString() {
Currency cur = Currency.getInstance("USD");
BigDecimal result = new BigDecimal("225.0453");
result = result.setScale(cur.getDefaultFractionDigits(),RoundingMode.HALF_EVEN);
NumberFormat nf = NumberFormat.getCurrencyInstance();
nf.setCurrency(cur);
nf.setMaximumFractionDigits(cur.getDefaultFractionDigits());
return nf.format(result.doubleValue());
}
此外,我也很乐意提供更好的解决方案,因为这似乎不太正确。 (我试过nf.setRoundingMode,但根本没用)
【问题讨论】:
标签: java rounding currency bigdecimal