我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
是
参数 [0] = "美元",参数 [1] = BigDecimal(0.0002),参数 [2] = "衬衫"
我希望格式化程序输出
“每件衬衫 0.0002 美元”
但是格式化程序正在降低精度并产生
“每件衬衫 0 美元”
看起来MessageFormat
只考虑小数点后 3 位数字。“BigDecimal(0.01)”按预期工作。
那么我可以调整任何属性来告诉MessageFormat
它应该使用一定的精度吗?改变pattern
不是我的选择。
我可以在格式化之前将参数转换为String
from 。BigDecimal
但这将是我最后的选择。
编辑:
3 个小数点的限制来自NumberFormat
.
private int maximumFractionDigits = 3;
有没有办法改变这个值并让 MessageFormat 使用它?