如何将"格式化双(String)"转换为double?

Mar*_*lsi 3 java jformattedtextfield

我有以下代码:

 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);
Run Code Online (Sandbox Code Playgroud)

此代码显示:

3 456,320
Run Code Online (Sandbox Code Playgroud)

直到现在它都很好,但是想象当我从JFormattedTextField获得相同的格式时,我如何将"3 456,320"转换为字符串为double(3456.32)?

我已经尝试过了:

String s="3 456,320";
double d= Double.valueOf(s);
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误......

编辑:

经过多次测试,我发现代码不是那么健壮,例如:

 //this works
 String s="3456,6567";

 NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);

 double d = (double) nf1.parse(s);
Run Code Online (Sandbox Code Playgroud)

但是这一个:

 String s="3456,0";

 NumberFormat nf1=NumberFormat.getInstance(Locale.FRANCE);

 double d = (double) nf1.parse(s);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

线程"main"中的异常java.lang.ClassCastException:java.lang.Long无法强制转换为java.lang.Double

通过利弊,我发现这非常强大:

    double d = nf1.parse(s).doubleValue();
Run Code Online (Sandbox Code Playgroud)

我们必须多次测试软件!

Pab*_*ruz 8

再试NumberFormat一次.

NumberFormat nf=NumberFormat.getInstance(Locale.FRANCE);
String s = "3 456,320";
double d = nf.parse(s);
Run Code Online (Sandbox Code Playgroud)