Вопрос-ответ

Best way to Format a Double value to 2 Decimal places [duplicate]

Лучший способ отформатировать двойное значение с точностью до 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 который работает таким же образом.

java