#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. Я не смог заставить это работать, но разве это не дало бы мне всего две цифры?