如何将“格式化的double(String)”转换为double?
问题描述:
我有以下代码:如何将“格式化的double(String)”转换为double?
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“作为字符串加倍(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();
我们必须多次测试软件!
答
再次尝试使用NumberFormat
。
NumberFormat nf=NumberFormat.getInstance(Locale.FRANCE);
String s = "3 456,320";
double d = nf.parse(s);
答
这可能工作:
Double d = Double.valueOf("3 456,320".replace(" ", "").replace(",", "."));
(必须承认,但脏)
+0
其作品的回应也是,但我会使用解析(s); ... – 2012-03-11 16:41:52
+1,由于其作品:-) – 2012-03-11 16:40:56
问题已更新,请更新:-) – 2012-03-13 00:10:08