我使用這個代碼句號之後:圓形浮到2個位數蟒蛇
f = 0.3223322
float('%.2f' % (f))
有更Python,更簡潔的方法,而不2件? 使用round是由下面的註釋泄氣從文檔
輪的行爲(),用於浮子可以是令人驚訝的:例如,圓形 (2.675,2)賦予2.67而不是預期的2.68。這不是 錯誤:這是由於大多數小數不能是 完全表示爲浮點數。有關更多信息,請參閱浮點算術:問題 和限制。
我使用這個代碼句號之後:圓形浮到2個位數蟒蛇
f = 0.3223322
float('%.2f' % (f))
有更Python,更簡潔的方法,而不2件? 使用round是由下面的註釋泄氣從文檔
輪的行爲(),用於浮子可以是令人驚訝的:例如,圓形 (2.675,2)賦予2.67而不是預期的2.68。這不是 錯誤:這是由於大多數小數不能是 完全表示爲浮點數。有關更多信息,請參閱浮點算術:問題 和限制。
>>> round(0.3223322, 2)
0.32
請注意,你可能仍然要產生輸出,由於浮點不精確時使用字符串格式化的一定精度。
取決於你想要達到的,它可能是適當的使用Decimal
類型:
>>> from decimal import Decimal
>>> round(Decimal(0.3223322), 2)
Decimal('0.32')
它做它的數學在(!驚喜)的十進制而不是二進制信號,因此不吃虧任何有小數舍入的問題(除非最初如果你想從浮點數創建它)。
這是不是很好,但我總是的粉絲:
f=float(int(100*f))/100
遠離做到這一點的最佳方式,但這是我經常使用的一種方法。
我會去與round()
,但如果你不喜歡它的行爲,你總是可以編寫自己的round()
所以,對於completness的緣故:
def custom_round(number, ndigits=2):
return int(number * 10 ** ndigits)/10.0 ** ndigits if ndigits else int(number)
請記住,這一輪,不像內置round()
下降,不起來。
請注意,float('%。2f'%f)'與round()具有完全相同的問題。這是因爲,正如文檔所述,這是浮點在計算機上運行的限制。在大多數情況下我都不會擔心。如果它確實很重要,我認爲最好使用'decimal'模塊,'fractions'模塊或一些任意的精確庫,這取決於具體的用例。 –
你想要做什麼? – Ryan