Точка силы (".") как десятичный разделитель в java
в настоящее время я использую следующий код, чтобы напечатать двойные:
return String.format("%.2f", someDouble);
Это хорошо работает, за исключением того, что Java использует десятичный разделитель моей локали (запятая), в то время как я хотел бы использовать точку. Существует ли простой способ сделать это?
6 ответов:
используйте перегрузку
String.format
что позволяет указать локаль:return String.format(Locale.ROOT, "%.2f", someDouble);
если вы только форматирование числа-как вы здесь-то с помощью
NumberFormat
вероятно, было бы более уместно. Но если вам нужны остальные возможности форматированияString.format
, это должно работать нормально.
более радикальным решением является установка локали в начале main().
Как:
Locale.setDefault(new Locale("en", "US"));
вы можете передать дополнительную Локаль на java.ленг.Строка.формат, а также java.io.PrintStream.printf (например, System.из.printf ()):
import java.util.Locale; public class PrintfLocales { public static void main(String args[]) { System.out.printf("%.2f: Default locale\n", 3.1415926535); System.out.printf(Locale.GERMANY, "%.2f: Germany locale\n", 3.1415926535); System.out.printf(Locale.US, "%.2f: US locale\n", 3.1415926535); } }
это приводит к следующему (на моем ПК):
$ java PrintfLocales 3.14: Default locale 3,14: Germany locale 3.14: US locale
посмотреть строку.формат в Java API.
слишком поздно, но, как и другие упомянутые здесь пример использования
NumberFormat
(и его подклассDecimalFormat
)public static String format(double num) { DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance(); decimalSymbols.setDecimalSeparator('.'); return new DecimalFormat("0.00", decimalSymbols).format(num); }
вы можете использовать NumberFormat и DecimalFormat.
взгляните на эту ссылку из учебников Java Локальное Форматирование
раздел под названием Locale-чувствительное форматирование - это то, что вам нужно.