2014-01-23 76 views
45

如何在Python 2.7中分割兩個數字並獲得小數的結果?Python 2.7中的分區。和3.3

我不明白爲什麼有差別:

在Python 3:

>>> 20/15 
1.3333333333333333 

在Python 2:

>>> 20/15 
1 

這不是一個模實際?

+7

這是整數除法,喲! '20 mod 15 == 5' –

+1

嘗試'浮動(20)/浮動(15)' – dumbledad

+0

或浮動20/15。 – Tbb

回答

70

在Python 2.7版中,/運營商是整數除法,如果輸入都是整數。

如果你想漂浮師(這是我一直喜歡的),只是用這種特殊的進口:

from __future__ import division 

見這裏:

>>> 3/2 
1 
>>> from __future__ import division 
>>> 3/2 
1.5 
>>> 

整數除法是通過使用//實現,並用%

>>> 3 % 2 
1 
>>> 3 // 1 
3 
>>> 

編輯

如註釋user2357112,此導入必須在任何其他正常導入之前完成。

+3

值得注意的是,未來的陳述必須出現在模塊中的任何其他代碼之前,尤其是在非將來的進口之前。另外,'import __future__'不起作用。 – user2357112

+0

不錯。使用'__future__'幾乎總是建議的方式 – woozyking

+0

謝謝!我也一直比較喜歡float分區:) – Erzsebet

25

在Python 3 /是浮除法

在Python 2,/是整數除法(假設int輸入)

在這兩個2 3,//是整數除法

(爲了在Python 2中進行浮點除法,需要兩個操作數中的一個爲浮點數,如20.float(20)

13

在Python 2.x中,確保在float中至少有一個您的分區的操作數。多種方法可以實現這一目標如下面的例子:

20./15 
20/float(15) 
9

「/」是Python 2中的整數除法,因此它將四捨五入爲整數。如果您想返回小數,只是改變一個輸入的類型爲float:

float(20)/15 #1.33333333