Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

People also ask

What is .2f in Java?

printf("%. 2f", value); The %. 2f syntax tells Java to return your variable (value) with 2 decimal places (.

How do you control decimal places in Java?

Using the format() method "%. 2f" denotes 2 decimal places, "%. 3f" denotes 3 decimal places, and so on. Hence in the format argument, we can mention the limit of the decimal places.

How do you do 2 decimal places in Java?

format(“%. 2f”) We also can use String formater %2f to round the double to 2 decimal places.

What is used as separator for decimal numbers?

Great Britain and the United States are two of the few places in the world that use a period to indicate the decimal place. Many other countries use a comma instead. The decimal separator is also called the radix character.


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.


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

Like:

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

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);
 }

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.