我有以下代码:
NumberFormat nf=NumberFormat.getInstance(Locale.FRANCE);
nf.setMinimumFractionDigits(3);
String s= nf.format(3456.32);
// double d= Double.valueOf(s); error here
System.out.println(s);
这段代码显示:
3 456,320
目前为止看起来很好,但是想象一下如果我从JFormattedTextField中获取到一个"3 456,320"的字符串,我该如何将其转化为double类型的数字(3456.32)呢?
我已经尝试过以下方法:
String s="3 456,320";
double d= Double.valueOf(s);
但我遇到了一个错误...
编辑:
经过多次测试,我发现代码不是很健壮,例如:
//this works
String s="3456,6567";
NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);
double d = (double) nf1.parse(s);
但是这个:
String s="3456,0";
NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);
double d = (double) nf1.parse(s);
我遇到了这个错误:
在主线程中发生异常:java.lang.ClassCastException: java.lang.Long 无法强制转换为 java.lang.Double
但是我认为以下方法非常健壮:
double d = nf1.parse(s).doubleValue();
我们必须多次测试软件!!!