Search code examples
javalocalizationnumbersstring-formatting

java String.format: numbers with localization


Is it possible to localize numbers in String.format call the same way as NumberFormat.format does?

I've expected it simply to use

String.format(locale, "%d", number)

but this doesn't return the same result as NumberFormat. For example:

String.format(Locale.GERMAN, "%d", 1234567890) 

gives: "1234567890", while

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890)

gives: "1.234.567.890"

If it can't be done, what's recommended way for localizing text including numbers?


Solution

  • From the documentation, you have to:

    • supply a locale (as you are doing in your example)
    • include the ',' flag to show locale-specific grouping separators

    So your example would become:

    String.format(Locale.GERMAN, "%,d", 1234567890) 
    

    Note the additional ',' flag before the 'd'.