我试图转换以逗号分隔的String
货币值。它最初有一个货币符号。在这种情况下,比索标志。
我所做的是先删除Pesos标志,然后从JTable
的第2列获取值String
"212,312.00"
,但是当我尝试使用{{}时1}}或Double.valueOf("212,312.00")
它返回了Double.parseDouble("212,312.00")
错误。
NumberFormatException
这是我的代码:
java.text.ParseException: Unparseable number: " 212,312.00"
有什么建议吗?我尝试了两种不同的解析方法,但看起来逗号是引起异常的原因。
答案 0 :(得分:0)
您可能需要使用java.text.NumberFormat
NumberFormat format = NumberFormat.getInstance(Locale.FRANCE);
Number number = format.parse("212,312.00");
double d = number.doubleValue();
注意:这仅在当前默认语言环境恰好使用逗号作为小数分隔符时才有效。某些语言环境使用逗号作为千位分隔符,在这种情况下,“212,312.00”将解析为212312.00而不是抛出错误。
否则,您可以使用replaceAll
并从数字中删除逗号(,)并仅解析数字。
答案 1 :(得分:0)
我意识到我必须添加另一个.replaceAll()
作为.replaceAll(",","")
;摆脱逗号。添加另一个replaceAll()
for (int x = 0; x < feesJtbl.getRowCount(); x++) {
String valueWithPesosSign = ((String) myModel.getValueAt(x, 1));
String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", "").replaceAll(",","");
doubleAmount = Double.parseDouble(stringAmount);
totalOfTuition += doubleAmount;
}