Как использовать DecimalFormat для форматирования денег?

ввод выглядит как 8.7000000, и я хочу отформатировать его так, чтобы он выглядел как 8.70 EUR. Я рассмотрел использование класса DecimalFormat:

    Double number = Double.valueOf(text);

    DecimalFormat dec = new DecimalFormat("#.## EUR");
    String credits = dec.format(number);

    TextView tt = (TextView) findViewById(R.id.creditsView);
    tt.setText(credits);

Результат 8,7 EUR. Как я могу сказать, что форматтер имеет две цифры после ,?

Ответ 1

Также хочу подчеркнуть, что Jon Skeet указывает на использование целого для хранения всей вашей валюты - не хотите иметь дело с ошибками с плавающей запятой в деньгах.

используйте .00 вместо. ## - 0 означает цифру, # означает цифру (но спрячьте ее, если она равна нулю)

Double number = Double.valueOf(text);

DecimalFormat dec = new DecimalFormat("#.00 EUR");
String credits = dec.format(number);

TextView tt = (TextView) findViewById(R.id.creditsView);
tt.setText(credits);

или

использовать setMinimumFractionDigits?

  Double number = Double.valueOf(text);

    DecimalFormat dec = new DecimalFormat("#.## EUR");
    dec.setMinimumFractionDigits(2);
    String credits = dec.format(number);

    TextView tt = (TextView) findViewById(R.id.creditsView);
    tt.setText(credits);

Ответ 2

Я нашел хорошее решение в этой ссылке ниже

http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html

короче, чтобы представлять валюту, например 92323345465.30, как 92 323 345 465,30 просто используйте ###, ###, ###, ###. 00

То есть, всякий раз, когда вы используете "0", тогда "0" будет либо заменено другой цифрой, либо если нет цифры для ее замены, тогда ЭТО ПОЯВИЕТСЯ! Но вы используете "#", если нет номера для замены "#", тогда это пространство будет пустым.

Помните, что вы даже можете добавить свои собственные символы, такие как $и т.д. перед форматированием или даже после строки форматирования

Ответ 3

Я думаю, что хорошим вариантом было бы это aproach:

Используя #,###.00, результат для значения 0.50 будет отображаться следующим образом:

$, 50

Однако, если вы используете #,##0.00, результат для того же значения будет:

$0,50