我想在Python中将指数形式的浮点数四舍五入到两位小数。
4.311237638482733e-91 --> 4.31e-91
你知道任何快速的方法来处理这个吗?
像 round(float, 2)
和 "%.2f"%float
这样简单的解决方案不适用于指数形式的浮点数:/
编辑: 这不是关于舍入浮点数,而是关于舍入指数浮点数,因此它与如何将数字舍入到 Python 中的有效数字不是同一个问题。
我想在Python中将指数形式的浮点数四舍五入到两位小数。
4.311237638482733e-91 --> 4.31e-91
你知道任何快速的方法来处理这个吗?
像 round(float, 2)
和 "%.2f"%float
这样简单的解决方案不适用于指数形式的浮点数:/
编辑: 这不是关于舍入浮点数,而是关于舍入指数浮点数,因此它与如何将数字舍入到 Python 中的有效数字不是同一个问题。
g
格式说明符,它基于精度选择指数和“常规”表示法,并指定有效数字的数量:>>> "%.3g" % 4.311237638482733e-91
'4.31e-91'
如果你想一直用指数表示数字,可以使用e
格式说明符,而f
则绝不使用指数表示法。完整的说明列表在这里。
另外请注意,除了%
风格的格式化之外,您还可以使用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'
f
不是格式化浮点数的唯一方式。请参见此处。另外,str.format
更加强大。 - Bakuriu