Я хочу иметь возможность преобразовать строку в Double с учетом количества десятичных знаков в строке формата. Таким образом, "###, ## 0.000" должно дать мне Double до 3 знаков после запятой.
Edit - добавлено больше информации о том, что происходит
Пользователь вводит значение в пользовательском интерфейсе, который вводится в строку. По правилу это значение ограничено 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, кажется, игнорирует строку формата и дает мне полную строку в виде Двойное значение из 1,234567.
Можно ли принудительно использовать DecimalFormat для использования строки формата при синтаксическом анализе? Я что-то упустил?
Ура,
Андез