我想在Python中将指数浮点数舍入到两个十进制表示。
4.311237638482733e-91 --> 4.31e-91
你知道有什么快速的伎俩吗?
像round(float, 2)
和"%.2f"%float
这样的简单解决方案不适用于指数浮点数:/
修改 它不是关于舍入浮点数,而是舍入指数浮点数,因此它不是How to round a number to significant figures in Python
的问题。答案 0 :(得分:4)
您可以使用g
格式说明符,它在指数和"通常"之间选择。基于精度的表示法,并指定有效位数:
>>> "%.3g" % 4.311237638482733e-91
'4.31e-91'
如果您希望始终以指数表示法表示数字,请使用e
格式说明符,而f
从不使用指数表示法。完整的可能性列表描述为here。
另请注意,您可以使用%
:
str.format
- 样式格式
>>> '{:.3g}'.format(4.311237638482733e-91)
'4.31e-91'
str.format
比%
样式格式更强大且可自定义,而且更加一致。例如:
>>> '' % []
''
>>> '' % set()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
>>> ''.format([])
''
>>> ''.format(set())
''
如果您不想在字符串文字上调用方法,可以使用format
内置函数:
>>> format(4.311237638482733e-91, '.3g')
'4.31e-91'