Лучший способ отформатировать двойное значение до 2 десятичных знаков

Возможный дубликат:
Радиус удвоения до 2 значащих цифр после десятичной точки

Я имею дело с большим количеством двойных значений в моем приложении, есть ли какой-либо простой способ обработки форматирования десятичных значений в Java?

Есть ли другой лучший способ сделать это, чем

 DecimalFormat df = new DecimalFormat("#.##");

Что я хочу сделать в основном, это формат двойных значений, например

23.59004  to 23.59

35.7  to 35.70

3.0 to 3.00

9 to 9.00

Ответ 1

Нет, нет лучшего способа.

На самом деле у вас есть ошибка в вашем шаблоне. Вы хотите:

DecimalFormat df = new DecimalFormat("#.00"); 

Обратите внимание на "00", что означает ровно два десятичных знака.

Если вы используете "#.##" (# означает "необязательная" цифра), он будет отбрасывать конечные нули - т.е. new DecimalFormat("#.##").format(3.0d); печатает только "3", а не "3.00".

Ответ 2

Альтернативой является использование String.format:

double[] arr = { 23.59004,
    35.7,
    3.0,
    9
};

for ( double dub : arr ) {
  System.out.println( String.format( "%.2f", dub ) );
}

выход:

23.59
35.70
3.00
9.00

Вы также можете использовать System.out.format (та же подпись метода) или создать java.util.Formatter, который работает таким же образом.