NumberFormat货币解析失败“无法解析的号码”

时间:2019-02-07 17:46:38

标签: java currency

当我尝试解析“ 10,10€”时,NumberFormat引发ParseException。

@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 :(得分:3)

似乎“ 10,10€”中的空格不是格式化程序所期望的正确ASCII。 此处(Parse currency with symbol: Not all case working - Java明确提到,格式类期望代码为160的字符,它被描述为“不间断空格”。