以科学计数法显示小数
我该怎么把 Decimal('40800000000.00000000000000')
显示成 '4.08E+10'
呢?
我试过这个:
>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'
但是结果多了那些多余的0。
13 个回答
73
给定你的数字
x = Decimal('40800000000.00000000000000')
从Python 3开始,
'{:.2e}'.format(x)
这是推荐的做法。
e
表示你想要科学计数法,.2
表示你希望小数点后保留2位数字。所以你会得到 x.xxE±n
这样的格式。
185
这里有一个使用 format()
函数的例子:
>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'
除了使用 format,你还可以用 f-字符串:
>>> f"{Decimal('40800000000.00000000000000'):.2E}"
'4.08E+10'
229
from decimal import Decimal
'%.2E' % Decimal('40800000000.00000000000000')
# returns '4.08E+10'
在你的这个数字 '40800000000.00000000000000' 中,有很多后面的零,它们和其他数字一样都是很重要的。这就是为什么你需要明确告诉系统你想在哪里停止的原因。
如果你想自动去掉所有多余的零,可以试试:
def format_e(n):
a = '%E' % n
return a.split('E')[0].rstrip('0').rstrip('.') + 'E' + a.split('E')[1]
format_e(Decimal('40800000000.00000000000000'))
# '4.08E+10'
format_e(Decimal('40000000000.00000000000000'))
# '4E+10'
format_e(Decimal('40812300000.00000000000000'))
# '4.08123E+10'