У меня есть очень небольшое число, и я хочу преобразовать его в Строку с полным числом, не сокращенным всегда. Я не знаю, насколько маленький это число может быть.
например, когда я работаю:
double d = 1E-10;
System.out.println(d);
это показывает 1.0E-10
вместо 0,000000001.
Я уже попробовал NumberFormat.getNumberInstance()
но это форматирует к 0
. и я не знаю что выражение использовать на a DecimalFormat
работать с любым числом.
Предполагая, что вам нужно 500 нулей перед вашим номером, когда вы делаете:
double d = 1E-500;
, тогда вы можете использовать:
double d = 1E-10;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(Integer.MAX_VALUE);
System.out.println(nf.format(d));
Вы можете установить максимальное и минимальное количество цифр в фракции informatterter с SetMinimumFractionDigits
и SetMaximummactionDIGITS
. Это должно решить проблему.
Вы можете сделать это с BigDecimals в Java 5, используя:
System.out.println(new java.math.BigDecimal(Double.toString(1E-10)).stripTrailingZeros().toPlainString());
Обратите внимание, что если у вас есть двойное значение в качестве строки в первую очередь, вам было бы лучше использовать:
System.out.println(new java.math.BigDecimal("1E-10").toPlainString());
... Как объясняется в бигнечных javadocs.
Посмотрите на: http://java.sun.com/docs/books/tutorial/i18n/format/decimalformat.html#numberpattern
Я думаю, что формат «0. ####» может работать.