Могу ли я сделать это с System.out.print
?
java
formatting
printf
decimal-point
via_point
источник
источник
String.format(java.util.Locale.US,"%.2f", val);
Locale.FRANCE
?Locale.US
заходит слишком далеко. Если вам нужно жестко закодировать «нейтральную» локаль для свертывания регистра, рендеринга чисел и т. Д., УкажитеLocale.ROOT
. Это подходит для текста, который будет использоваться другой программой, а не визуализирован для пользователей. Для текста, представляемого пользователю, учитывайте его языковой стандарт, независимо от того, указали ли они его явно или по умолчанию.Вы можете использовать
DecimalFormat
. Один из способов его использования:Другой способ - построить его, используя
#.##
формат.Я нахожу все параметры форматирования менее читабельными, чем вызов методов форматирования, но это вопрос предпочтений.
источник
System.out.printf("%.2f", value)
синтаксисом? Это все еще вокруг?DecimalFormat
ответы, я сразу же подумал, что был неправ, но спасибо за разъяснение этого.df.setMinimumFractionDigits(2);
к силе две цифрыЯ бы предложил использовать String.format (), если вам нужно значение как
String
в вашем коде.Например, вы можете использовать
String.format()
следующим образом:источник
источник
DecimalFormat df = new DecimalFormat("0.00");
источник
Выход 22,35. Если вам нужно 3 десятичных знака, измените его на «% .3f».
источник
Многие люди упоминали
DecimalFormat
. Но вы также можете использовать,printf
если у вас есть последняя версия Java:Обратитесь к документации на Formatter для получения дополнительной информации о строке формата printf .
источник
Простой трюк состоит в том, чтобы сгенерировать более короткую версию вашей переменной, умножив ее, например
100
, на округление и деление на100.0
снова. Таким образом, вы генерируете переменную с двумя десятичными разрядами :Этот «дешевый трюк» всегда был достаточно хорош для меня и работает на любом языке (я не Java-человек, просто изучаю его).
источник
Вы можете использовать эти быстрые коды ниже, которые изменились в конце. Добавьте количество нулей, как указано после точки
источник
Посмотрите на DecimalFormat
Вот пример из учебника:
Если вы выберете шаблон типа "###. ##", вы получите два знака после запятой, и я думаю, что значения округлены. Вы захотите посмотреть на ссылку, чтобы получить точный формат, который вы хотите (например, хотите ли вы конечные нули)
источник
Ниже приведен код, как вы можете отобразить вывод данных с плавающей запятой с двумя десятичными разрядами в Java:
источник
ОК - ул, чтобы отпустить.
Вывод:
источник
Небольшая простая программа для демонстрации:
источник
Просто сделайте это,
String str = System.out.printf("%.2f", val).replace(",", ".");
если хотите убедиться, что независимо от языкового стандарта пользователя вы всегда получите / отобразите «.» в качестве десятичного разделителя. Это необходимо, если вы не хотите, чтобы ваша программа вылетала, если позже вы сделаете какое-то преобразование, напримерfloat f = Float.parseFloat(str);
источник
Одна проблема, которая заставляла меня работать час или более
DecimalFormat
- она по-разному обрабатывает двойные и плавающие вводы. Даже смена RoundingMode не помогла. Я не эксперт, но думал, что это может помочь кому-то, как я. Закончилось использованиемMath.round
вместо. Увидеть ниже:Вывод:
источник
Попробуй это:-
источник