Java (новичок), преобразующий научную нотацию в десятичную

если

double d =  1.999e-4

Я хочу, чтобы мой результат был 0,0001999.

Как я могу это сделать?

Ответ 1

NumberFormat formatter = new DecimalFormat("###.#####");  

String f = formatter.format(d);  

Вы можете изучить подкласс класса NumberFormat, чтобы узнать подробности.

Ответ 2

Вы можете сделать это следующим образом:

    double d = 1.999e-4;
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumFractionDigits(7);
    System.out.println(nf.format(d));

Ознакомьтесь с документацией методов NumberFormat для форматирования double, как вам удобно.

DecimalFormat является частным случаем NumberFormat как состояния его конструктора, я не думаю, что вам нужна его функциональность для вашего дела. Проверьте их документацию, если вы запутались. Для удобства используйте метод factory getInstance() of NumberFormat.

Ответ 3

Я предполагаю, что в классе BigDecimal существует метод toPlainString(). например если BigDecimal равен 1.23e-8, тогда метод возвращает 0.0000000124.

BigDecimal d = new BigDecimal("1.23E-8");

System.out.println(d.toPlainString());

Выше кода печатается 0.0000000123, тогда вы можете обрабатывать строку согласно вашему требованию.

Ответ 4

Если все, что вы хотите, должно печатать таким образом.

System.out.printf("%1$.10f", d);

вы можете изменить 10f, 10 = количество десятичных знаков, которое вы хотите.

Ответ 5

Посмотрите

java.text.DecimalFormat

и

java.text.DecimalFormatSymbols