Как преобразовать «отформатированный двойной (String)» в двойной? - PullRequest
3 голосов
/ 11 марта 2012

У меня есть следующий код:

 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)?

Я уже пробовал это:

* * 1010

но я получаю ошибку ...

EDIT

после нескольких тестов я обнаружил, что код не такой надежный, например:

 //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);

Я получаю эту ошибку:

Исключение в потоке "main" java.lang.ClassCastException: java.lang.Long не может быть приведен к java.lang.Double

к минусам я нахожу это очень надежным:

    double d = nf1.parse(s).doubleValue();

мы должны протестировать программное обеспечение несколько раз !!!

Ответы [ 2 ]

8 голосов
/ 11 марта 2012

Попробуйте снова использовать NumberFormat.

NumberFormat nf=NumberFormat.getInstance(Locale.FRANCE);
String s = "3 456,320";
double d = nf.parse(s);
2 голосов
/ 11 марта 2012

это может работать:

Double d = Double.valueOf("3 456,320".replace(" ", "").replace(",", "."));

(должен признать, немного грязно)

...