Формат Java Количество / Сумма в - PullRequest
2 голосов
/ 20 июля 2011

Я хотел бы отформатировать сумму: требуемый формат: #. ## 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 ]

3 голосов
/ 21 июля 2011

"#.##0,00" - недопустимая строка формата.

Запятая, а только запятая - это символ группировки, но он локализован , что означает, что еслиВы устанавливаете Locale, вы получите соответствующий разделитель для вашей локали.

Если вы предпочитаете способ «однострочный хак», это будет работать:

new DecimalFormat("#,##0.00").format($F{amount}.doubleValue()).replace(",", "x").replace(".", ",").replace("x", ".");
0 голосов
/ 20 июля 2011

Может быть что-то вроде:

DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
return (new DecimalFormat("#.##0,00", symbols)).format($F{amount}.doubleValue());

Проверьте конструктор с двумя аргументами для DecimalFormat

0 голосов
/ 20 июля 2011

Ну, я бы использовал класс 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);
}

надеюсь, что это работает для вас ...

...