Как я могу отобразить это:
Десятичное число ('40800000000.00000000000000') как '4.08E + 10'?
Я пробовал это:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Но у него есть те дополнительные 0.
Как я могу отобразить это:
Десятичное число ('40800000000.00000000000000') как '4.08E + 10'?
Я пробовал это:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
Но у него есть те дополнительные 0.
Ответы:
В ваших «40800000000.00000000000000» есть много более значимых нулей, которые имеют то же значение, что и любая другая цифра. Вот почему вы должны четко указать, где вы хотите остановиться.
Если вы хотите удалить все конечные нули автоматически, вы можете попробовать:
источник
format % values
синтаксис все еще используется даже в стандартной библиотеке Python 3, я считаю, что он технически устарел в Python 3 или, по крайней мере, не рекомендуемый метод форматирования, и текущий рекомендуемый синтаксис, начиная с Python 2.6, будет'{0:.2E}'.format(Decimal('40800000000.00000000000000'))
( или'{:.2E}'
в Python 2.7+). Хотя это не совсем полезно для этой ситуации, из-за дополнительных символов для отсутствия дополнительной функциональности,str.format
это позволяет более сложное смешивание / перестановка / повторное использование аргументов формата.format
. Это более джазово .Вот пример использования
format()
функции:Вместо формата вы также можете использовать f-строки :
официальная документация
исходный формат () предложение
источник
f"{Decimal('40800000000.00000000000000'):.2E}"
Учитывая ваш номер
Начиная с Python 3,
это рекомендуемый способ сделать это.
e
означает, что вы хотите научную запись, и.2
означает, что вы хотите 2 цифры после точки. Так вы получитеx.xxE±n
источник
float(x)
сделает конвертацию x в float.Никто не упомянул краткую форму
.format
метода:Требуется как минимум Python 3.6
(Я считаю, что это так же, как Сис Тиммерман, только немного короче)
источник
{num:E}
Посмотрите таблицы из форматирования строк Python, чтобы выбрать правильный формат формата. В твоем случае это
%.2E
.источник
Мои десятичные числа слишком велики,
%E
поэтому мне пришлось импровизировать:Вот пример использования:
источник
"{:.2e}".format(n)
возвращается'3.39e+7800'
в Python 3.3.2 (v3.3.2: d047928ae3f6, 16 мая 2013, 00:06:53) [MSC v.1600 64 бит (AMD64)] на win32.Это сработало лучше для меня:
источник
Это сводный список «простых» ответов и комментариев.
ПИТОН 3
ИЛИ Без
IMPORT
«sСравнение
Так что для Python 3 вы можете переключаться между любыми из трех на данный момент.
Мой любимчик:
источник
Я предпочитаю Python 3.x способ.
4
указывает, сколько цифр показано в плавающей части.источник
Чтобы преобразовать десятичную в научную нотацию без необходимости указывать точность в строке формата и без учета конечных нулей, я в настоящее время использую
Чтобы сохранить любые завершающие нули, просто удалите
normalize()
.источник
Вот самый простой, который я смог найти.
('E' не чувствительна к регистру. Вы также можете использовать '.2e')
источник
источник