将指数浮点数舍入到小数点后两位

Les*_*zek 9 python rounding exponential

我想在 Python 中将指数浮点数四舍五入为两位十进制表示。

4.311237638482733e-91 --> 4.31e-91
Run Code Online (Sandbox Code Playgroud)

你知道有什么快速的技巧可以做到这一点吗?
简单的解决方案,例如round(float, 2)并且"%.2f"%float不使用指数浮点数:/

编辑: 这不是关于舍入浮点数,而是舍入指数浮点数,因此它与如何在 Python 中将数字舍入为有效数字不同

Bak*_*riu 13

您可以使用g格式说明符,它根据精度在指数和“通常”表示法之间进行选择,并指定有效位数:

>>> "%.3g" % 4.311237638482733e-91
'4.31e-91'
Run Code Online (Sandbox Code Playgroud)

如果您想始终以指数表示法表示数字,请使用e格式说明符,而f 从不使用指数表示法。此处描述完整的可能性列表。

另请注意,%您可以使用str.format以下格式代替-style 格式:

>>> '{:.3g}'.format(4.311237638482733e-91)
'4.31e-91'
Run Code Online (Sandbox Code Playgroud)

str.format%-style 格式更强大、更可定制,也更一致。例如:

>>> '' % []
''
>>> '' % set()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
>>> ''.format([])
''
>>> ''.format(set())
''
Run Code Online (Sandbox Code Playgroud)

如果您不喜欢在字符串文字上调用方法,您可以使用format内置函数:

>>> format(4.311237638482733e-91, '.3g')
'4.31e-91'
Run Code Online (Sandbox Code Playgroud)