解析具有负后缀的数字

时间:2012-07-02 18:40:24

标签: java number-formatting decimalformat

有人可以向我解释为什么以下代码会提供此输出吗?

1.2
null

运行以下代码:

String positive = "1.2+";
String negative = "1.2-";
DecimalFormat format = new DecimalFormat("0.0");
format.setPositiveSuffix("+");
format.setNegativeSuffix("-");  
format.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));
System.out.println(format.parse(positive, new ParsePosition(0)));
System.out.println(format.parse(negative, new ParsePosition(0)));

这虽然有效,但我不喜欢重复模式:

String positive = "1.2+";
String negative = "1.2-";
DecimalFormat format = new DecimalFormat("0.0+;0.0-");  
format.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));
System.out.println(format.parse(positive, new ParsePosition(0)));
System.out.println(format.parse(negative, new ParsePosition(0)));

后缀不打算用于解析吗?

1 个答案:

答案 0 :(得分:2)

如javadoc中所述:

  

负面子模式是可选的;如果不存在,那么正子模式前缀为局部减号(在大多数语言环境中为' - ')

在你的例子中,解析器正在等待“-1.2-”,所以你必须添加这一行:

format.setNegativePrefix("");

度过美好的一天!