Округление 2 знаков после запятой с помощью DecimalFormat с использованием локали по умолчанию

Как я могу получить только ДВА знака после запятой независимо от локали. Я знаю, что могу использовать DecimalFormat для ручного форматирования, например "0.00", если захочу, но я хочу получить правильный десятичный тип в локали пользователя И округлить до двух знаков.

DecimalFormat dFormat = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
etPayment.setText(dFormat.format(p)); // How would I do it on this line?

person TheLettuceMaster    schedule 24.01.2015    source источник
comment
NumberFormat.setMaximumFractionDigits возможно?   -  person VGR    schedule 25.01.2015
comment
@VGR Я совсем забыл об этом. Я использовал это раньше. По какой-то причине моя IDE (Android Studio) не распознает ни одну из установленных функций?   -  person TheLettuceMaster    schedule 25.01.2015


Ответы (2)


DecimalFormat currencyFormatter = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());

currencyFormatter.setMaximumFractionDigits(2); // << This should
currencyFormatter.setMinimumFractionDigits(2); // << do the trick

System.out.println(currencyFormatter.format(-123456.7812));

Выведет:

-123,456.78

Или, если у вас есть локаль, такая как Locale.GERMANY:

-123.456,78

Обновление: (простое копирование и вставка)

DecimalFormat dFormat = (DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
dFormat.setMaximumFractionDigits(2); // << This should
dFormat.setMinimumFractionDigits(2); // << do the trick
etPayment.setText(dFormat.format(p));
person DominikAngerer    schedule 24.01.2015

Попробуйте DecimalFormat dFormat = new DecimalFormat("#.00");

person CodeWalker    schedule 24.01.2015
comment
Я упомянул выше, что могу это сделать, но это не учитывает все локали пользователя. Некоторые пользователи предпочитают видеть 0,00 вместо 0.00. Есть ли универсальный способ округления И использования локали по умолчанию, был мой вопрос. - person TheLettuceMaster; 25.01.2015