2010-12-16 215 views
2

到目前爲止,我會做int(float('3.5'))Python:將'3.5'轉換成整數

任何其他好的方法呢?

注意:3.5是一個字符串。

我想使用指定這類問題的內置API。

+0

你說的 「好」 是什麼意思? – 2010-12-16 21:51:12

回答

5

你在正確的軌道上,而最好的解決方案可能是因爲提到:

>>> 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 
1

所有你需要的是 int(3.5)

注意,這截斷;它不輪。

+0

3.5是一個字符串,對不起,我沒有說清楚。 – user469652 2010-12-16 21:52:05

+0

>>> 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) 文件 「」,第2行,在 ValueError異常:爲無效字面int()以10爲底:「3.5」 >>> – user469652 2010-12-16 21:54:13

+1

其實它不會 - 在這種情況下,我會在您的帖子中使用該方法。否則,你會得到'ValueError:int()的無效文字,其基數爲10:'3.5'' – Hut8 2010-12-16 21:54:21

4

唯一可能比您擁有的代碼更簡單,更清晰的代碼是int('3.5'),這是行不通的。因此,您擁有的是最簡單,最清晰的工作代碼。

1

也許int(eval('3.5'))

+1

我會說這是一個壞主意,因爲一般來說eval可能相當難看。如果除eval之外還有其他選項,那麼他們應該首先考慮。 – 2010-12-16 23:05:54

+0

我同意。我只是試圖提供替代品。 – 2010-12-16 23:41:22