Закръгляване до 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