#java
Ребят всем привет. Есть число double res, допустим, 0.1321231;. Как вывести только 0.13? Знаю, что можно вывести так: System.out.printf("%.2f", res); но только что это значит? Как можно вывести стандартно через System.out.println?
Ответы
Ответ 1
printf подразумевает форматирование строки в дополнение к выводу, только и всего. Для получения форматированной строки без вывода надо использовать String.format(). String formattedDouble = String.format("%.2f", 0.1321231); http://docs.oracle.com/javase/tutorial/java/data/numberformat.htmlОтвет 2
Чуть правильнее и быстрее будет использовать DecimalFormat. String formattedDouble = new DecimalFormat("#0.00").format(0.1321231); Само собой, строку формата "#0.00" стоит вынести куда-нибудь в константу, возможно, общую на все приложение. Целиком вытаскивать объект new DecimalFormat("#0.00") в константу, напротив не стоит из соображений потокобезопасности. Выигрыш в производительности по сравнению со String.format() может быть что-то около 2х раз. Плюс DecimalFormat использует настройки локали для разделителя целой и дробной частей.Ответ 3
String formattedDouble = new DecimalFormat("#0.00").format(0.1321231); Вот этот способ отлично оставляет две цифры после запятой.Ответ 4
Если java не поддерживает DecimalFormat, то придется так: Float value = 0.123f; String result = String.format("%8.2f", value).replace(',', '.');
Комментариев нет:
Отправить комментарий