Force point (".") as decimal separator in 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.
A more drastic solution is to set your Locale early in the main().
Like:
Locale.setDefault(new Locale("en", "US"));
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.
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);
}