回答
你在正確的軌道上,而最好的解決方案可能是因爲提到:
>>> int(float("3.5"))
這截斷浮動。
如果你想有一個不同的舍入類型的,你可以使用math
包:如果在另一方面,你想數四捨五入到最接近的整數
>>> import math
>>> x = "3.5"
>>> math.floor(float(x)) # returns FP; still needs to be wrapped in int()
3.0
>>> math.ceil(float(x)) # same
4.0
>>> math.trunc(float(x)) # returns an int; essentially the same as int(float(x))
3
,您可以使用浮點在轉換爲整數之前內置操作round
,例如
>>> int(round(float(x))) # 3.5 => 4
4
>>> int(round(3.4999))
3
所有你需要的是 int(3.5)
注意,這截斷;它不輪。
3.5是一個字符串,對不起,我沒有說清楚。 – user469652 2010-12-16 21:52:05
>>> int('3.5') 回溯(最近一次調用最後一次): 文件「/var/apache2/2.2/htdocs/try.py」,第146行,封裝 value,wantmore = evaluate(source, hisvars) 文件 「/var/apache2/2.2/htdocs/try.py」,線路126,在評估值 = EVAL(代碼,hisvars) 文件 「
其實它不會 - 在這種情況下,我會在您的帖子中使用該方法。否則,你會得到'ValueError:int()的無效文字,其基數爲10:'3.5'' – Hut8 2010-12-16 21:54:21
唯一可能比您擁有的代碼更簡單,更清晰的代碼是int('3.5')
,這是行不通的。因此,您擁有的是最簡單,最清晰的工作代碼。
也許int(eval('3.5'))
我會說這是一個壞主意,因爲一般來說eval可能相當難看。如果除eval之外還有其他選項,那麼他們應該首先考慮。 – 2010-12-16 23:05:54
我同意。我只是試圖提供替代品。 – 2010-12-16 23:41:22
你說的 「好」 是什麼意思? – 2010-12-16 21:51:12