Force point (".") as decimal separator in java

JavaFormattingDouble

Java Problem Overview


I currently use the following code to print a double:

return String.format("%.2f", someDouble);

This works well, except that Java uses my Locale's decimal separator (a comma) while I would like to use a point. Is there an easy way to do this?

Java Solutions


Solution 1 - Java

Use the overload of String.format which lets you specify the locale:

return String.format(Locale.ROOT, "%.2f", someDouble);

If you're only formatting a number - as you are here - then using NumberFormat would probably be more appropriate. But if you need the rest of the formatting capabilities of String.format, this should work fine.

Solution 2 - Java

A more drastic solution is to set your Locale early in the main().

Like:

Locale.setDefault(new Locale("en", "US"));

Solution 3 - Java

Way too late but as other mentioned here is sample usage of NumberFormat (and its subclass DecimalFormat)

public static String format(double num) {
    DecimalFormatSymbols decimalSymbols = DecimalFormatSymbols.getInstance();
    decimalSymbols.setDecimalSeparator('.');
    return new DecimalFormat("0.00", decimalSymbols).format(num);
 }

Solution 4 - Java

You can pass an additional Locale to java.lang.String.format as well as to java.io.PrintStream.printf (e.g. System.out.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);
    }

}

This results in the following (on my PC):

$ java PrintfLocales
3.14: Default locale
3,14: Germany locale
3.14: US locale

See String.format in the Java API.

Solution 5 - Java

You can use NumberFormat and DecimalFormat.

Take a look at this link from Java Tutorials LocaleSpecific Formatting

The section titled Locale-Sensitive Formatting is what you need.

Solution 6 - Java

Change the language, it worked for me.

How to set eclipse console locale/language https://stackoverflow.com/questions/4947484/how-to-set-eclipse-console-locale-language

Solution 7 - Java

I had the same issue.. 55.1 transformed to 55,10. My quick (dirty?) fix is :

String.format("%.2f", value).replaceAll(",",".");

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondtechView Question on Stackoverflow
Solution 1 - JavaJon SkeetView Answer on Stackoverflow
Solution 2 - JavaFederico GiorgiView Answer on Stackoverflow
Solution 3 - JavaVizGharView Answer on Stackoverflow
Solution 4 - JavaSimon A. EugsterView Answer on Stackoverflow
Solution 5 - Javablong824View Answer on Stackoverflow
Solution 6 - JavaAlper ŞekercioğluView Answer on Stackoverflow
Solution 7 - Javafred'View Answer on Stackoverflow