Разделитель группировки в java.text.DecimalFormatSymbols определен неправильно для страны Лихтенштейн. Он определяется как точка (.), но должен быть определен как цитата ('). Определение Лихтенштейна должно быть таким же, как в Швейцарии.
Я использовал следующий тест с Oracle Java 1.8:
public static void main(String[] args) {
// Locale for Liechtenstein: Language DE and country li
Locale li = new Locale("DE", "li");
DecimalFormatSymbols li_symbols = new DecimalFormatSymbols(li);
System.out.println("LI Grouping symbol is: " + li_symbols.getGroupingSeparator());
// Locale for Switzerland: Language DE and country ch
Locale ch = new Locale("DE", "ch");
DecimalFormatSymbols ch_symbols = new DecimalFormatSymbols(ch);
System.out.println("CH Grouping symbol is: " + ch_symbols.getGroupingSeparator());
}
Он распечатает
LI Grouping symbol is: .
CH Grouping symbol is: '
Есть ли способ исправить это для всей установки java? Изменение языкового стандарта или десятичных символов в каждом месте кода, где десятичный формат используется для форматирования или анализа чисел, здесь не вариант.
В Java 9 все нормально. Это альтернатива?




Можно ли было бы использовать швейцарский формат? Это не решает проблему, но я не понимаю, почему так было бы неправильно. (Я не имею в виду, что Швейцария намного лучше, чем Лихтенштейн ... хотя ... (я, очевидно, шучу))