Преобразование числа с плавающей запятой в научной нотации в «d.dd x 10 ^ (-n)»

#python

#python

Вопрос:

Я создаю калькулятор для вычисления некоторых вычислений, связанных с химией. Таким образом, большинство результатов будут иметь чрезвычайно малые значения.

Примером результата является 4.840909814726882e-09 .

Как мне отобразить это значение в формате, подобном 4.84 x 10^(-9) ?

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

1. format(num, '.2e') будет генерироваться 4.84e-09 , что не совсем то, что вы хотите, но становится все ближе.

2. f'{str(a)[:4]} x 10^({str(a)[-3:]})' может работать

Ответ №1:

попробуйте это:

 format(4.840909814726882e-09, '.2e').replace('e', ' x 10^(')   ')'
 

Вывод:
4.84 x 10^(-09)
Это не совсем тот результат, который вы хотели, но это просто.

Также есть:

 def my_format(num):
    s = format(num, '.2e')
    base, exp = s.split('e')
    return f'{base} x 10^({int(exp)})'
 

Вывод:

 >>> my_format(4.840909814726882e-09)
'4.84 x 10^(-9)'
 

что более сложно, но это именно тот результат, который вы хотели.

Ответ №2:

Как мне отобразить значение в формате, подобном 4,84 x 10 ^ (-9)?

Вручную, это не формат, поддерживаемый Python.

Хотя, если вы просто хотите «округлить» число, потому что у вас нет и не нужно 15 значащих цифр, тогда вы можете использовать спецификаторы формата и либо g тип представления:

 >>> format(v, 'g')
'4.84091e-09'
 

или явная точность:

 >>> format(v, '.3')
'4.84e-09'
 

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

1. Это довольно явно указано в ответе?

2. OP использует формулировку «формат, подобный x», неясно, хотят ли они этого точного форматирования или просто хотят избежать совершенно ненужной точности форматирования по умолчанию. Я предположил, что последнее может или будет полезно, учитывая, что Python может легко сгенерировать его изначально.

3. Я уже пробовал ваш метод раньше, но я хочу отформатировать его до 4,84 x 10 ^ (-9)