当我尝试解析“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);
}
Run Code Online (Sandbox Code Playgroud)
这是我运行测试时抛出的
java.text.ParseException: Unparseable number: "10,10 €"
Run Code Online (Sandbox Code Playgroud)
每当我这样做时,它都可以正常工作:
@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);
}
Run Code Online (Sandbox Code Playgroud)
我怀疑它与空间有关,但我仍然不知道如何解决它,有什么想法吗?
似乎“10,10 \xe2\x82\xac”中的空格不是格式化程序期望的正确 ASCII。\n这里明确提到了(用符号解析货币:并非所有情况都有效 - Java)格式类期望代码为 160 的字符,该字符被描述为“不间断空格”。
\n