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