Строка неправильно обрабатывается DecimalFormat с разными локалями - PullRequest
0 голосов
/ 14 октября 2019

Код: -

((DecimalFormat)DecimalFormat.getInstance(new Locale("en","US"))).parse("0.5")

Выход: 0,5

Код: -

((DecimalFormat)DecimalFormat.getInstance(new Locale("es","CN"))).parse("0.5")

Выход: 5

Я использую DecimalFormat для форматирования строки в число, но она как-то не дает ожидаемых результатов для разных локалей. Пожалуйста, помогите мне получить одинаковый вывод для всех языков.

Ответы [ 2 ]

2 голосов
/ 14 октября 2019

Вам нужно использовать правильный десятичный разделитель для данной локали, поэтому, поскольку для испанского языка это запятая, вам нужно иметь

 ((DecimalFormat)DecimalFormat.getInstance(new Locale("es","CN"))).parse("0,5")

Но, конечно, если "0.5" - правильный формат, то вам нужновместо этого измените локаль на ту, которая соответствует формату

1 голос
/ 14 октября 2019

Вы вводите «es» в Locale, так что вы анализируете его как испанский способ анализа строки. На испанском языке десятичный разделитель - запятая. Таким образом, 0.5 становится 5.

...