我正在使用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"
我期望格式化程序输出
"USD 0.0002 每 shirt"
但是格式化程序减少了精度并产生了
"USD 0 每 shirt"
看起来 MessageFormat
只考虑小数点后的3个数字。"BigDecimal(0.01)" 的效果符合预期。
那么有没有任何属性可以调整告诉 MessageFormat
使用特定的精度?对我来说,更改 pattern
不是一个选项。
我可以在格式化之前将参数从 BigDecimal
转换为 String
。但那将是我的最后选择。
编辑:
3个小数点的限制来自于 NumberFormat
。
private int maximumFractionDigits = 3;
有没有办法改变这个值,并让MessageFormat使用它?