Java NumberFormat货币格式转数字时报错:java.text.ParseException: Unparseable number: “¥123,456.12”

使用Java的NumberFormat可以将数字格式化为货币,也可以将货币格式转化为纯数字,但是在执行代码后报错:

Exception in thread "main" java.text.ParseException: Unparseable number: "¥123,456.12"
	at java.text.NumberFormat.parse(NumberFormat.java:385)
	at com.itzhimei.base.bit.TestNumberFormat.main(TestNumberFormat.java:69)

代码:

public static void main(String[] args) throws ParseException {
	NumberFormat nf = NumberFormat.getInstance();
	Number p2 = nf.parse("¥123,456.12");
	System.out.println(p2);
}

原因在于NumberFormat有多种格式化的对象,也就是多种格式化模式,处理货币,要用货币模式,也就是我们get这个:

NumberFormat nf = NumberFormat.getCurrencyInstance();

那么代码修改一下,如下:

public static void main(String[] args) throws ParseException {
	Number p3 = NumberFormat.getCurrencyInstance().parse("¥123,456.12");
	System.out.println(p3);
}	
/* 输出
123456.12
*/