Я согласен с biziclop и Joachim Sauer что баловаться с десятичной и разделителей группировки и делать эту работу вручную, может вызвать много проблем. Использование параметра locale в методе getInstance NumberFormat
делает всю работу за вас автоматически. И вы можете легко отключить тысячу разделителей групп, если хотите.
Следующий метод тестирования junit (который проходит) показывает это поведение на основе английского и немецкого языков.
public void testFormatter() {
DecimalFormat formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.UK);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
formatter = (DecimalFormat) DecimalFormat.getInstance(Locale.GERMAN);
assertEquals(',', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
//and in case you want another decimal seperator for a specific locale
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
formatter.setDecimalFormatSymbols(decimalFormatSymbols);
assertEquals('.', formatter.getDecimalFormatSymbols().getDecimalSeparator()); //true
}
Для записи Numberformat является абстрактным классом, поэтому вы, вероятно, фактически имеете объект DecimalFormat. – redcalx
@locster: либо 'DecimalFormat', либо' ChoiceFormat', либо недокументированная JDK-приватная реализация NumberFormat или ... –
Для записи эта строка _DecimalFormat format = DecimalFormat.getInstance(); _ не делает компилируется, поскольку метод getInstance() возвращает объект NumberFormat. – Chexpir