2014-06-09 68 views
2

我想将指数浮点四舍五入到Python中的两个十进制表示。圆指数浮点数到2小数

4.311237638482733e-91 --> 4.31e-91 

你知道有什么快速的方法可以做到吗?
round(float, 2)"%.2f"%float简单的解决方案,不与指数彩车工作:/

编辑: 这不是四舍五入浮动,但舍指数浮动,因此它并不像How to round a number to significant figures in Python

+3

' “%0.3克” %4.311237638482733e-91 - >'4.31e-91'''''不是格式化浮点数的唯一方法。请参阅[这里](https://docs.python.org/2/library/stdtypes.html#string-formatting)。 'str.format'更强大。 – Bakuriu

+3

'格式(4.311237638482733e-91,'.2e')'?? –

+0

thx快速回答! – Leszek

回答

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'