以科学计数法显示小数

新手上路,请多包涵

如何将 Decimal('40800000000.00000000000000') 显示为 '4.08E+10'

我试过这个:

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

但它有那些额外的0。

原文由 Greg 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 567
2 个回答
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'

原文由 eumiro 发布,翻译遵循 CC BY-SA 3.0 许可协议

下面是一个使用 format() 函数的例子:

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

除了格式,您还可以使用 f-strings

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

原文由 Cees Timmerman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题