用科学记数法显示小数

2024-03-29 15:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

如何显示:

十进制('4080000000000.00000000000000')为'4.08E+10'?

我试过这个:

>>> '%E' % Decimal('40800000000.00000000000000')
'4.080000E+10'

但它有那些额外的0


Tags: decimal
3条回答

给你电话号码

x = Decimal('40800000000.00000000000000')

从Python 3开始

'{:.2e}'.format(x)

是推荐的方法。

e表示您想要科学符号,.2表示您想要点后面的两位数字。所以你会得到x.xxE±n

from decimal import Decimal

'%.2E' % Decimal('40800000000.00000000000000')

# returns '4.08E+10'

在你的“4080000000000.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'

下面是使用format()函数的示例:

>>> "{:.2E}".format(Decimal('40800000000.00000000000000'))
'4.08E+10'

相关问题 更多 >