我想格式化一个数量:所需的格式是:#。## 0,00 例如:299.552.698,05或299.552.698,00
当我尝试使用
时 (new DecimalFormat("#.##0,00")).format($F{amount}.doubleValue())
它导致异常并且我尝试使用:
NumberFormat.getCurrencyInstance(Locale.ENGLISH).format($F{amount}.doubleValue())
我有一个我不想打印的货币符号。
答案 0 :(得分:3)
"#.##0,00"
是无效的格式字符串。
逗号和仅逗号是分组字符,但它是本地化,这意味着如果您设置了区域设置,您将获得适当的分隔符你的地区。
如果您更喜欢“一线黑客”方式,这将有效:
new DecimalFormat("#,##0.00").format($F{amount}.doubleValue()).replace(",", "x").replace(".", ",").replace("x", ".");
答案 1 :(得分:0)
好吧,我会使用DecimalFormatSymbols类来欺骗格式化程序,如下所示:
public String formatNumber(double value) {
DecimalFormat formatter = new DecimalFormat("###,###.00");
DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.getDefault());
symbols.setDecimalSeparator(',');
symbols.setGroupingSeparator('.');
formatter.setDecimalFormatSymbols(symbols);
return formatter.format(value);
}
希望它适合你...
答案 2 :(得分:0)
可能是这样的:
DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
return (new DecimalFormat("#.##0,00", symbols)).format($F{amount}.doubleValue());
的两个参数构造函数