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

14 投票
1 回答
16058 浏览
提问于 2025-04-18 09:07

我想在Python中把科学计数法的浮点数四舍五入到小数点后两位。

4.311237638482733e-91 --> 4.31e-91

你知道有什么快速的方法吗?
round(float, 2)"%.2f"%float 这样的简单方法对科学计数法的浮点数不管用:/

编辑: 这不是关于普通浮点数的四舍五入,而是关于科学计数法浮点数的四舍五入,所以这和 如何在Python中四舍五入到有效数字 的问题不一样。

1 个回答

20

你可以使用 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'

撰写回答