Как разобрать "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(",", ""));

Это грязно, но вам не нужно решать локаль.

Другие вопросы по тегам