Как разобрать "1,234.56" в Java как Double?
У меня возникли проблемы с синтаксическим анализом "1 234,56" в Java, аналогичный вопрос рекомендую использовать французскую локаль в форматировании чисел, но результат синтаксического анализа неверен. Вот что у меня есть:
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("1,234.56");
System.out.println(number.doubleValue()); // Should get 1234.56, got 1.234 instead
Number number = format.parse("1,234,567.89");
System.out.println(number.doubleValue()); // Should get 1234567.89
3 ответа
Решение
1,234.56
это не французская запись (Что-то вроде 1.234,56
является).
Измените ваш язык на Locale.ENGLISH
, Locale.US
, или похожие
Французская локаль имеет десятичную запятую. Вам нужно будет использовать локали США:
NumberFormat format = NumberFormat.getInstance(Locale.US);
или же Locale.ENGLISH
на основе языка:
NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH);
Вы можете использовать замену строки и заменить ","
за ""
format.parse(("1,234.56").replace(",", ""));
Это грязно, но вам не нужно решать локаль.