圆指数浮点数到2位小数

时间:2014-06-09 10:31:25

标签: python rounding exponential

我想在Python中将指数浮点数舍入到两个十进制表示。

4.311237638482733e-91 --> 4.31e-91

你知道有什么快速的伎俩吗? 像round(float, 2)"%.2f"%float这样的简单解决方案不适用于指数浮点数:/

修改 它不是关于舍入浮点数,而是舍入指数浮点数,因此它不是How to round a number to significant figures in Python

的问题。

1 个答案:

答案 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'