2011-01-24 75 views
29

Python提供長的便利方法()到字符串轉換爲長:轉換字符串長在python

long('234') 

;轉換「234」爲長

如果在234.89用戶鍵則Python會引發錯誤消息:

ValueError: invalid literal for long() 
with base 10: '234.89' 

我們應該怎麼Python程序員處理場景中有一個十進制值的字符串?

謝謝=)

+2

將其轉換爲浮點數?抓住錯誤並向用戶報告? – John

+4

此問題及其答案僅適用於Python 2. Python 3不再具有長類型,請參閱http://python3porting.com/differences.html#long – hertzsprung

回答

25

long只能採取串敞篷其可以在基座10標記結束。所以,小數點造成傷害。你可以做的是,float調用long之前的值。如果你的程序在Python 2.x中的int和long差別很重要,並且你確定你沒有使用大整數,那麼你可以用int來提供關鍵。

所以,答案是long(float('234.89'))或者它可能只是int(float('234.89'))如果你不使用大整數。另外請注意,這種差異在Python 3中不會出現,因爲默認情況下int會升級爲long。 python3中的所有整數都是長的,並且調用隱藏的只是int

+0

謝謝,這真的有幫助 – zfranciscus

+2

int('234.89')與問題中顯示的相同錯誤失敗。 – payne

+0

@ payne-謝謝指出。我已糾正它。你的是對的。 –

12

好,多頭不能裝東西,但整數。

一種選擇是使用浮動:float('234.89')

另一種選擇是向截斷或舍入。從浮點數轉換成一個長將截斷爲您:long(float('234.89'))

>>> long(float('1.1')) 
1L 
>>> long(float('1.9')) 
1L 
>>> long(round(float('1.1'))) 
1L 
>>> long(round(float('1.9'))) 
2L