Как установить количество знаков после запятой в нотации scientifi c? - PullRequest
0 голосов
/ 08 января 2020

Я работаю над python 2.7. Я хочу исправить количество десятичных разрядов в числе, написанном в нотации scientifi c, например 1.32e6, но вместо использования, например, "% 3f". Я хочу написать что-то вроде:

n=3
"%.nf"

, где n - количество десятичных знаков, но это можно изменить из моего приложения.

Ответы [ 5 ]

3 голосов
/ 08 января 2020
i = 123456789
n = 3
print('{:.{n}e}'.format(i, n=n))

Выход:

'1.235e+08'
3 голосов
/ 08 января 2020
n = 4
print("{0:.{1}f}".format(1.987213,n))
n = 5
print("{0:.{1}f}".format(1.987213,n))

Выход

1.9872
1.98721
1 голос
/ 08 января 2020

Старый оператор форматирования в стиле printf поддерживает это, хотя вы, вероятно, захотите использовать более новый метод format.

>>> n = 3
>>> "%.*f" % (n, 3.14159)
'3.142'

Когда вы используете * в качестве точности, Используемое значение предшествует значению с плавающей точкой в ​​кортеже RHS.

1 голос
/ 08 января 2020

Вы можете попробовать это,

>>> a = 10e6
>>> n = 2
>>> '%.{}f'.format(n) % a
'10000000.00'

Или бросить на поплавок,

>>> a = 10e6
>>> n = 2
>>> float('%.{}f'.format(n) % a)
10000000.0

Если вы хотите вернуться к научной c записи,

>>> a = 103.023232
>>> n = 3
>>> '%.{}E'.format(n) % a
'1.030E+02'
0 голосов
/ 14 января 2020

Спасибо всем телам за ответы. Я попробовал метод Ajay Dabas, и это отлично сработало для меня. Этот пример будет использоваться в основном (но простом) приложении. Полный код с улучшенным решением:

enter code here entrada_n = "Ingrese n:" enter code here n = input (entrada_n)

enter code here entrada_numero = "Ingrese Numberro:" enter code here цифра = ввод (entrada_numero)

enter code here печать ("{0:. {1} f}". Формат (нумерация, n)) enter code here печать ("{0:. { 1} е}». формат (Numero, п))

...