конвертировать очень маленький двойной в строку - PullRequest
5 голосов
/ 20 января 2010

У меня очень маленькое число, и я хочу преобразовать его в строку с полным номером, без каких-либо сокращений. Я не знаю, насколько маленьким может быть это число.

например, когда я запускаю:

double d = 1E-10;
System.out.println(d);

показывает 1.0E-10 вместо 0,000000001.

Я уже пробовал NumberFormat.getNumberInstance(), но он форматируется до 0. и я не знаю, какое выражение использовать на DecimalFormat для работы с любым числом.

Ответы [ 4 ]

10 голосов
/ 20 января 2010

Предполагая, что вы хотите 500 нулей перед вашим номером, когда вы делаете:

double d = 1E-500;

тогда вы можете использовать:

double d = 1E-10;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(Integer.MAX_VALUE);
System.out.println(nf.format(d));
3 голосов
/ 20 января 2010

Вы можете установить максимальное и минимальное количество цифр в части числового формата с помощью setMinimumFractionDigits и setMaximumFractionDigits. это должно решить проблему.

2 голосов
/ 20 января 2010

Вы можете сделать это с 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());

... как объяснено в BigDecimal javadocs.

0 голосов
/ 20 января 2010

Посмотрите на: http://java.sun.com/docs/books/tutorial/i18n/format/decimalFormat.html#numberpattern

Я думаю, что формат "0. ####" может работать.

...