Числовой формат с Locale дает неправильный вывод - PullRequest
0 голосов
/ 19 марта 2020

Я хочу норвежский формат валюты. Мой код

NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("no","NO"));
        System.out.println(numberFormat.format(188800.99));

Это дает 188 800,99. Но норвежская числовая комбинация составляет 188,800,99 https://docs.oracle.com/cd/E19455-01/806-0169/overview-9/index.html

1 Ответ

0 голосов
/ 19 марта 2020

Я не думаю, что закономерности в данных странах определены в официальных документах / стандартах. В приведенной вами ссылке правильный шаблон в Норвегии действительно 188,800,99, но когда я проверял wikipedia , он говорит, что 188 800,99 будет правильным форматом в Норвегии.

В качестве решения вы можете либо найти NumberFormat, который вам подходит, либо создать свой собственный, просто так:

DecimalFormat numberFormat = new DecimalFormat("#,##0.00");
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(',');
decimalFormatSymbols.setGroupingSeparator('.');
numberFormat.setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(numberFormat.format(1881212800.9));

Он печатает число как 1.881.212.800,90 , В шаблоне #,##0.00 хэши представляют необязательные числа, а нули - требуемые числа. В этом случае слева от запятой всегда будет хотя бы одно число, а справа - два.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...