【发布时间】:2014-12-08 19:10:16
【问题描述】:
出现这个错误
java.lang.NumberFormatException: For input string: "20,00"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.agitech.autofaces.el.FormatUtil.parseDouble(FormatUtil.java:122)
at com.agitech.erp.converter.DoubleConverter.getAsObject(DoubleConverter.java:27)
看完decimal-separator-in-numberformat这个,我试试
public class FormatUtil {
public static char ApplicationDecimalSeparator = ',';
public static char SystemDecimalSeparator;
static {
DecimalFormatSymbols symbols= DecimalFormatSymbols.getInstance();
SystemDecimalSeparator = symbols.getDecimalSeparator();
symbols.setDecimalSeparator(ApplicationDecimalSeparator);
}
public final static Double parseDouble(String d){
if (d==null)
return 0.0;
return Double.parseDouble( fixDecimalSeparator(d) );
}
public final static String fixDecimalSeparator(String d){
if (SystemDecimalSeparator==ApplicationDecimalSeparator)
return d;
return d.replaceAll( ""+SystemDecimalSeparator, ""+ApplicationDecimalSeparator);
}
}
最后 SystemDecimalSeparator 已经是“,”那么为什么会出现这个异常?
它可能期望 20.00 但如何获取和修复此分隔符?
确实我测试了它的期望“20.00”,而默认的 SystemDecimalSeparator 已经是','
【问题讨论】:
-
可能值得看看下面的帖子stackoverflow.com/questions/4713166/…
-
请发布 NumberFormatException 的完整堆栈跟踪
标签: java