2014-06-09 66 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'