Я хочу, чтобы иметь возможность преобразовать строку в Двойной, учитывая число десятичных знаков в строке формата. Поэтому "###, ## 0.000" должен дать мне Double до 3 знаков после запятой.
Изменить - добавлено больше информации о том, что произойдет
Пользователь вводит значение в пользовательском интерфейсе, которое вводится в строку. Правило - это значение ограничено 3 знаками после запятой. В базовом коде хранится значение в базе данных, которое затем используется при вычислении. Поэтому конечные десятичные разряды заставят вычисления немного отклоняться от ожидаемого.
У меня есть следующий код:
try {
// output current locale we are running under (this happens to be "nl_BE")
System.out.println( "Current Locale is " + Locale.getDefault().toString() );
// number in Central European Format with a format string specified in UK format
String numberCE = "1,234567"; // 1.234567
String formatUK = "###,##0.000";
// do the format
DecimalFormat formatterUK = new DecimalFormat( formatUK );
Double valCEWithUKFormat = formatterUK.parse( numberCE ).doubleValue();
// I want the number to DPs in the format string!!!
System.out.println( "CE Value " + numberCE + " in UK format (" + formatUK + ") is "
+ valCEWithUKFormat );
} catch( ParseException ex ) {
System.out.println("Cannot parse number");
}
}
Кажется, что DecimalFormat игнорирует строку формата и дает мне полную строку как Double из 1.234567.
Может ли DecimalFormat принудительно использовать строку формата при разборе? Я что-то пропустил?
Приветствия,
Andez