Отформатируйте номер в научную нотацию c, но в 3e-5 вместо 3e-05 - PullRequest
1 голос
/ 30 апреля 2020

У меня есть очень маленькое или очень большое число, которое я хочу напечатать в научном формате c:

pattern = "{:.0e}"
value1 = pattern.format(0.00003)
value2 = pattern.format(0.00000000005)
value3 = pattern.format(999999999) 
print(value1, value2, value3)
# Current output: 3e-05 5e-11 1e+09
# Desired output: 3e-5 5e-11 1e+9

Есть ли лучший способ отформатировать число в форму без 0 после -, чем value1.replace("-0", "-").replace("+0", "+")? Я хотел бы, чтобы число было как можно короче.

1 Ответ

0 голосов
/ 30 апреля 2020

Использовать десятичное число.

import decimal
pattern = "{:.0e}"
value1 = pattern.format(decimal.Decimal('0.00003'))
value2 = pattern.format(decimal.Decimal('0.00000000005'))
value3 = pattern.format(decimal.Decimal('999999999'))
print(value1, value2, value3)
...