В настоящее время я использую следующий код для печати двойника:
return String.format("%.2f", someDouble);
Это работает хорошо, за исключением того, что в Java используется десятичный разделитель моей локали (запятая), а я хотел бы использовать точку. Есть простой способ сделать это?
java
formatting
double
dtech
источник
источник
Ответы:
Используйте перегрузку,
String.format
которая позволяет указать языковой стандарт:Если вы форматируете только число, как здесь, то использование
NumberFormat
, вероятно, будет более подходящим. Но если вам нужны остальные возможности форматированияString.format
, это должно работать нормально.источник
Более радикальное решение - установить локаль заранее в main ().
Подобно:
источник
Вы можете передать дополнительный языковой стандарт в java.lang.String.format, а также в java.io.PrintStream.printf (например, System.out.printf ()):
Это приводит к следующему (на моем ПК):
См. String.format в Java API.
источник
out.printf((Locale)null, ...)
илиout.format((Locale)null, ...)
для получения независимого от локали представления. (и есть ещеLocale.ROOT
)Слишком поздно, но, как уже упоминалось, здесь приводится пример использования
NumberFormat
(и его подклассаDecimalFormat
)источник
DecimalFormatSymbols
и настройку разделителя нужно делать один раз, перед этим методом.Вы можете использовать NumberFormat и DecimalFormat.
Взгляните на эту ссылку из Java Tutorials LocaleSpecific Formatting
Раздел под названием "Форматирование с учетом локали" - это то, что вам нужно.
источник
У меня была такая же проблема ..
55.1
преобразовался в55,10
. Мое быстрое (грязное?) Исправление:String.format("%.2f", value).replaceAll(",",".");
источник