Java格式编号/金额

时间:2011-07-20 16:33:45

标签: java jasper-reports string-formatting ireport

我想格式化一个数量:所需的格式是:#。## 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())

我有一个我不想打印的货币符号。

3 个答案:

答案 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());

查看DecimalFormat

的两个参数构造函数