Нет разделителя группировки char для DecimalFormat

DecimalFormat использует ',' как разделитель разделителей по умолчанию.

Каков правильный способ сказать DecimalFormat, что нам не нужен символ разделителя группировки? В настоящее время я использую symbol.setGroupingSeparator('\ 0'), и, похоже, он работает, но выглядит уродливо.

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator('.');
symbols.setGroupingSeparator('\0');

DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(symbols);

ParsePosition pp = new ParsePosition(0);
Number result = df.parse("44,000.0", pp);   // this should fail, as I don't want any grouping separatator char.
if (pp.getIndex() != input.length())
   throw new Exception("invalid number: " + input, 0);

Каков правильный способ сказать DecimalFormat, что нам не нужен разделитель групп char?

Ответ 1

Отключите группировку, вызвав setGroupingUsed:

df.setGroupingUsed(false);

Ответ 2

Вы можете использовать метод setGroupingUsed(), но это не приведет к тому, что формат отклонит число, он просто прекратит разбор на первый разделитель. Число разбор с форматами будет игнорировать все после первого недопустимого символа.