Как использовать 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