Десятичное форматирование Java с использованием String.format?

Мне нужно отформатировать десятичное значение в строку, где я всегда показываю по крайней мере 2 десятичных знака и не более 4.

Так например

"34.49596" would be "34.4959" 
"49.3" would be "49.30"

Можно ли это сделать с помощью команды String.format?
Или есть более простой / лучший способ сделать это в Java.


person richs    schedule 11.01.2009    source источник


Ответы (6)


Вам нужен java.text.DecimalFormat.

DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);
person Richard Campbell    schedule 11.01.2009
comment
Следуя тому же примеру, вы получите неверный результат. В этом конкретном примере вам нужно использовать RoundingMode.DOWN. В противном случае используется HALF_EVEN. Нет, хотя отрицательно. - person Adeel Ansari; 12.01.2009

Да, вы можете сделать это с помощью String.format:

String result = String.format("%.2f", 10.0 / 3.0);
// result:  "3.33"

result = String.format("%.3f", 2.5);
// result:  "2.500"
person mostar    schedule 04.10.2012
comment
Возможно, это неправильный ответ на заданный вопрос, но я пришел сюда, чтобы найти его. Спасибо! - person milosmns; 10.01.2016

Вот небольшой фрагмент кода, который выполняет свою работу:

double a = 34.51234;

NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);

System.out.println(df.format(a));
person Yuval Adam    schedule 11.01.2009
comment
Никаких минусов, но ваш код не работает для самого первого примера, приведенного на исходном плакате. Необходимо использовать RoundingMode.DOWN, иначе, я полагаю, по умолчанию используется HALF_EVEN. - person Adeel Ansari; 12.01.2009

java.text.NumberFormat, вероятно, то, что вам нужно.

person cagcowboy    schedule 11.01.2009

NumberFormat и DecimalFormat определенно то, что вам нужно. Также обратите внимание на метод NumberFormat.setRoundingMode(). Вы можете использовать его, чтобы контролировать, как округление или усечение применяется во время форматирования.

person Brian Clapper    schedule 12.01.2009

Вам нужен java.text.DecimalFormat

person duffymo    schedule 11.01.2009