Obecnie używam następującego kodu, aby wydrukować podwójne:
return String.format("%.2f", someDouble);
Działa to dobrze, z wyjątkiem tego, że Java używa separatora dziesiętnego mojego Locale (przecinek), podczas gdy ja chciałbym użyć kropki. Czy jest na to łatwy sposób?
java
formatting
double
dtech
źródło
źródło
Odpowiedzi:
Użyj przeciążenia,
String.format
które pozwala określić ustawienia regionalne:Jeśli formatujesz tylko liczbę - tak jak tutaj - użycie
NumberFormat
prawdopodobnie byłoby bardziej odpowiednie. Ale jeśli potrzebujesz pozostałych możliwości formatowaniaString.format
, powinno to działać dobrze.źródło
Bardziej drastycznym rozwiązaniem jest wczesne ustawienie ustawień regionalnych w main ().
Lubić:
źródło
Możesz przekazać dodatkowe ustawienia regionalne do java.lang.String.format, a także do java.io.PrintStream.printf (np. System.out.printf ()):
Powoduje to (na moim komputerze):
Zobacz String.format w Java API.
źródło
out.printf((Locale)null, ...)
lub,out.format((Locale)null, ...)
aby uzyskać niezależną reprezentację lokalną. (i jest teżLocale.ROOT
)O wiele za późno, ale jak wspomniano tutaj, jest przykładowe użycie
NumberFormat
(i jego podklasyDecimalFormat
)źródło
DecimalFormatSymbols
i ustawienie separatora powinno być zrobione raz, przed tą metodą.Możesz użyć NumberFormat i DecimalFormat.
Spójrz na to łącze z samouczków Java LocaleSpecific Formatting
Sekcja zatytułowana Formatowanie z uwzględnieniem ustawień regionalnych jest tym, czego potrzebujesz.
źródło
Miałem ten sam problem ...
55.1
przekształcony w55,10
. Moja szybka (brudna?) Poprawka to:String.format("%.2f", value).replaceAll(",",".");
źródło