How to change the decimal separator of DecimalFormat from comma to dot/point? How to change the decimal separator of DecimalFormat from comma to dot/point? java java

How to change the decimal separator of DecimalFormat from comma to dot/point?


You can change the separator either by setting a locale or using the DecimalFormatSymbols.

If you want the grouping separator to be a point, you can use an european locale:

NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);DecimalFormat df = (DecimalFormat)nf;

Alternatively you can use the DecimalFormatSymbols class to change the symbols that appear in the formatted numbers produced by the format method. These symbols include the decimal separator, the grouping separator, the minus sign, and the percent sign, among others:

DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);otherSymbols.setDecimalSeparator(',');otherSymbols.setGroupingSeparator('.'); DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

currentLocale can be obtained from Locale.getDefault() i.e.:

Locale currentLocale = Locale.getDefault();


Europe is quite huge. I'm not sure if they use the same format all over. However this or this answer will be of help.

String text = "1,234567";NumberFormat nf_in = NumberFormat.getNumberInstance(Locale.GERMANY);double val = nf_in.parse(text).doubleValue();NumberFormat nf_out = NumberFormat.getNumberInstance(Locale.UK);nf_out.setMaximumFractionDigits(3);String output = nf_out.format(val);

I.e. use the correct locale.


public String getGermanCurrencyFormat(double value) {    NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);    nf.setGroupingUsed(true);    return "€ " + nf.format(value);}