com.ibm.icu.text.DecimalFormat 总是抛出 ParseException
com.ibm.icu.text.DecimalFormat always throws ParseException
使用下面的代码我只想允许正数。出于某种原因,我什至无法正确解析字符串:
DecimalFormat dfNoNegative = new DecimalFormat("#,##0.00");
dfNoNegative.setNegativePrefix("");
try {
System.out.println(dfNoNegative.parse("123.00"));
} catch (ParseException e) {
System.out.println(e.getMessage());
System.out.println(e.getErrorOffset());
e.printStackTrace();
}
错误信息和ErrorOffset:
Unparseable number: "123.00"
6
谁能指导我哪里错了?工作字符串的示例也很好
我的错误是 dfNoNegative.setNegativePrefix("");
一事无成 (""
)。这不起作用,因为字符串直接以数字开头,而 123
不是 ""
,因此它失败了。基本上,此方法会覆盖应该用作否定前缀的内容(默认为 -
)。例如,如果将其设置为 !
,System.out.println(dfNoNegative.parse("!123.00"));
将打印 -123
.
使用下面的代码我只想允许正数。出于某种原因,我什至无法正确解析字符串:
DecimalFormat dfNoNegative = new DecimalFormat("#,##0.00");
dfNoNegative.setNegativePrefix("");
try {
System.out.println(dfNoNegative.parse("123.00"));
} catch (ParseException e) {
System.out.println(e.getMessage());
System.out.println(e.getErrorOffset());
e.printStackTrace();
}
错误信息和ErrorOffset:
Unparseable number: "123.00"
6
谁能指导我哪里错了?工作字符串的示例也很好
我的错误是 dfNoNegative.setNegativePrefix("");
一事无成 (""
)。这不起作用,因为字符串直接以数字开头,而 123
不是 ""
,因此它失败了。基本上,此方法会覆盖应该用作否定前缀的内容(默认为 -
)。例如,如果将其设置为 !
,System.out.println(dfNoNegative.parse("!123.00"));
将打印 -123
.