Try this one. In this case you don't need to define the pattern.
DecimalFormat format = (DecimalFormat) NumberFormat.getNumberInstance(Locale.FRENCH);
format.setMaximumFractionDigits(2);
System.out.println(format.format(1.234567));
Have a look at this program. Find out your locale and use locale specific NumberFormat
.
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class LocaleNumberFormatDemo {
/**
* @param args
*/
public static void main(String[] args) {
double no = 123456.7890;
System.out.println(Locale.getAvailableLocales().length);
for (Locale locale : Locale.getAvailableLocales()) {
NumberFormat numberFormat = DecimalFormat.getNumberInstance(locale);
System.out.println("========================================");
System.out.println(locale.getDisplayCountry() + " - " + locale.toString());
System.out.println(numberFormat.format(no));
DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(locale);
String numberPattern = decimalFormat.toLocalizedPattern();
System.out.println(numberPattern);
}
}
}
output:
Malaysia - ms_MY
123,456.789
#,##0.###
========================================
Qatar - ar_QA
123,456.789
#,##0.###;#,##0.###-
========================================
Iceland - is_IS
123.456,789
#.##0,###
========================================
Finland - fi_FI
123 456,789
# ##0,###
and so on...