Как напечатать большое число с экспоненциальной нотацией?

#java #decimal #notation #exponential

#java #десятичная #нотация #экспоненциальный

Вопрос:

Если у меня есть число 52000000000, и я хочу распечатать его как 5.2E 9, как мне это сделать с помощью printf?

Ответ №1:

Поскольку это простой метод, я проведу вас по нему.

Вам понадобятся два счетчика: один для самого числа (введите double, назовем его ‘num’) и один для показателя степени (целое число, назовем его exp). Вам понадобится цикл while, чтобы, когда num больше 10, разделить num на 10 и увеличить exp на 1. Итак, что-то вроде 7600 должно иметь num = 7,6, exp = 3.

В зависимости от вашего типа возвращаемого значения вы можете возвращать эти значения различными способами. Простым способом было бы иметь возвращаемый тип string и возвращать num «E» exp .

Комментарии:

1. Показатель степени по основанию 10 — это логарифм числа по основанию 10, округленный log(7600)=3.xx в меньшую сторону. Вам не нужны деления в цикле.

2. Правильно… Сегодня я не мог нормально мыслить. Запрашивающий, вероятно, должен просто пометить ваш комментарий как ответ, если это возможно. Намного проще и эффективнее.

3. Был также способ сделать это с помощью printf(«%e», число)

Ответ №2:

Это можно сделать с помощью printf(«%.2g», 52000000000); «g» — символ преобразования для научной нотации для форматирования, а «.2» задает точность.

Ответ №3:

Вам нужно взглянуть на это: DecimalFormat

 formatter = new DecimalFormat("0.#E0");
System.out.println(formatter.format(value));//value is where you store the number to be formatted
 

Комментарии:

1. Похоже, нет способа сделать это автоматически с несколькими разными числами разной длины…

2. Это лучший способ сделать это, но это похоже на домашнее задание или что-то в этом роде, поэтому я выбрал вышеуказанное.

3. Я не смог заставить это работать, но разве это не дало бы мне всего две цифры?