2014-03-25 60 views
1

如何從float中刪除所有小數位?python - 從float中刪除所有小數

a = 100.0

我想,要成爲100

我試過str(a).rstrip('.0'),但它只是返回1

+0

浮點數將始終包含小數位數,最好更改爲int – Aidan

+0

值得指出「.0'!!= .0」。一個是'串',另一個是'浮動'。 – IanAuld

+1

與往常一樣,閱讀[documentation](http://docs.python.org/2/library/stdtypes.html#str.rstrip)有助於(至少避免到達某些路徑):*「返回字符串的副本刪除了尾隨字符,chars參數是一個字符串,指定要刪除的字符集。「*因此,如果您執行了'rstrip('。0')',它將刪除所有出現的'.'和'0'字符串的結尾。 –

回答

9

什麼將其轉換爲int

>>>int(a) 
100 

只是爲了完整起見,有很多很多方法可以從一個十進制數,一個我可以想出現在的字符串表示去掉小數部分:

s='100.0' 
s=s[:s.index('.')] 
s 
>>>'100' 

也許還有一個更簡單。

希望這會有所幫助!

+0

如果你想濫用'os.path'庫:'s ='100.0';打印os.path.splitext(s)[0]#100'。這利用了小數看起來像文件擴展名的事實。 – SethMMorton

+0

s,_,_ = s.partition('。')'看起來最簡單。甚至是's,* _ = s.partition('。')'在py3中。 – roippi

+0

'os.path'很聰明,但我認爲其他人在查看代碼時很難理解它的意圖。在發佈之前,我看到了'partition',但喜歡更多的切片,這只是我的意見:)感謝您的建議! –

2

如果你不想將它轉換爲int,你也可以分割它。

>>> a = 100.25 
>>> str(a).split('.')[0] 
>>> '100' # result is now a string 
+0

任何人都可以解釋我downvote?這只是一種替代方法! – ederollora

+0

可能是因爲它是一個非常低劣的「解決方案」。 –

+0

我提供了一個正確的解決方案,通過嘗試使用字符串方法刪除小數位來解決他的字符串方法。問題沒有說明答案的數據類型。 – ederollora

0

如果你獲得的浮動可以落地它//

a = 200/2 # outputs 100.0 
a = 200 // 2 # outputs 100 

比事後類型轉換快!

相關問題