Как вывести только два знака после запятой?

Рейтинг: 7Ответов: 4Опубликовано: 09.01.2015

Ребят всем привет. Есть число double res, допустим, 0.1321231;. Как вывести только 0.13?

Знаю, что можно вывести так:

System.out.printf("%.2f", res);

но только что это значит? Как можно вывести стандартно через System.out.println?

Ответы

▲ 9Принят

printf подразумевает форматирование строки в дополнение к выводу, только и всего. Для получения форматированной строки без вывода надо использовать String.format().

String formattedDouble = String.format("%.2f", 0.1321231);

http://docs.oracle.com/javase/tutorial/java/data/numberformat.html

▲ 17

Чуть правильнее и быстрее будет использовать DecimalFormat.

String formattedDouble = new DecimalFormat("#0.00").format(0.1321231);

Само собой, строку формата "#0.00" стоит вынести куда-нибудь в константу, возможно, общую на все приложение.

Целиком вытаскивать объект new DecimalFormat("#0.00") в константу, напротив не стоит из соображений потокобезопасности.

Выигрыш в производительности по сравнению со String.format() может быть что-то около 2х раз. Плюс DecimalFormat использует настройки локали для разделителя целой и дробной частей.

▲ 2
String formattedDouble = new DecimalFormat("#0.00").format(0.1321231);

Вот этот способ отлично оставляет две цифры после запятой.

▲ 1

Если java не поддерживает DecimalFormat, то придется так:

Float value = 0.123f;
String result = String.format("%8.2f", value).replace(',', '.');