I currently use the following code to print a double:
return String.format(\"%.2f\", someDouble);
This works well, except that Java uses my
I had the same issue.. 55.1 transformed to 55,10.
My quick (dirty?) fix is :
String.format("%.2f", value).replaceAll(",",".");
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.
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);
}
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.
Change the language, it worked for me.
How to set eclipse console locale/language How to set eclipse console locale/language