【发布时间】:2020-12-08 07:14:21
【问题描述】:
我正在使用 java.text.MessageFormat 替换显示单价的模板中的占位符。以下是执行此操作的代码。
public String format(Object[] arguments, String pattern) {
MessageFormat formatter = new MessageFormat("");
formatter.applyPattern(pattern);
return formatter.format(arguments);
}
pattern是
{0} {1} 每 {2}
和arguments 是
argument[0] = "USD",argument[1] = BigDecimal(0.0002),argument[2] = "shirt"
我希望格式化程序能够输出
“每件衬衫 0.0002 美元”
但格式化程序正在降低精度并产生
“每件衬衫 0 美元”
看起来 MessageFormat 只考虑小数点后 3 位数字。 “BigDecimal(0.01)”按预期工作。
那么我可以调整任何属性来告诉MessageFormat 它应该使用一定的精度吗?更改 pattern 不是我的选择。
我可以在格式化之前将参数从BigDecimal 转换为String。但这将是我最后的选择。
编辑:
小数点后三位限制来自NumberFormat。
private int maximumFractionDigits = 3;
有没有办法我们可以改变这个值并让 MessageFormat 使用它?
【问题讨论】:
标签: java formatting bigdecimal messageformat