У меня есть следующий код:
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();
мы должны протестировать программное обеспечение несколько раз !!!