Сбой при разборе валюты NumberFormat "Непонятный номер" - PullRequest
0 голосов
/ 07 февраля 2019

NumberFormat генерирует ParseException, когда я пытаюсь проанализировать "10,10 €".

@Test
public void get_currency_from_text() throws Exception {
    String moneyAsString = "10,10 €";
    //Do not use double for monetary values
    Double moneyAsDouble = 10.10;

    NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
    Double parsedMoney = formatter.parse(moneyAsString).doubleValue();
    assertEquals(moneyAsDouble, parsedMoney);
}

Это то, что я выбрасываю при запуске теста

java.text.ParseException: Unparseable number: "10,10 €"

Работает нормальнохотя всякий раз, когда я делаю это:

@Test
public void get_currency_from_text() throws Exception {

    Double moneyAsDouble = 10.10;

    NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.GERMANY);
    String moneyAsString = formatter.format(moneyAsDouble);
    Double parsedMoney = formatter.parse(moneyAsString).doubleValue();

    System.out.println(moneyAsString);
    //10,10 €

    assertEquals(moneyAsDouble, parsedMoney);
}

Я подозреваю, что это как-то связано с пространством, но я все еще не знаю, как это исправить, есть идеи?

1 Ответ

0 голосов
/ 07 февраля 2019

Кажется, что пробел в "10,10 €" - это не тот ASCII, который ожидает форматтер.Здесь ясно упоминается ( Разбор валюты с символом: не все дела работают - Java ), что класс формата ожидает символ с кодом 160, который описывается как "неразрывный пробел".

...