從python2.2開始,便有兩種除法運算符:"/"、"//"。兩者最大區別在:
- python2.2前的版本和python2.2以后3.0以前的版本的默認情況下,"/"所做的除法是以一種兩個數或者多個數出現一個浮點數結果就以浮點數的形式表示,即float除法
- "//"所做的除法則不相同,"//"不管兩者出現任何數,都以整除結果為准,不對小數部分進行處理,直接拋棄,也就是整除法
以下是筆者在編譯器測試的數據,測試的版本是python2.7
關於"/":
-
-
1
-
-
1.5
-
-
1.5
-
-
3.3333333333333335
-
由以上的例子我們可得出,只要除數中有一個數是浮點數,那么得到的結果也是浮點數
以下是關於"//":
-
>>> 3//2
-
1
-
>>> 3//2.0
-
1.0
-
>>> 3.0//2
-
1.0
-
>>> 3.0//2.0
-
1.0
-
由以上的例子,我們可以看出,兩個整型相除,得到的還是整型,但是。如果一個浮點數除以一個非浮點數得到的還會是一個浮點數,但是,計算的結果卻是忽略小數部分,運算的結果類似兩個整型相除,但是得到一個浮點數。另外"//"對於兩個浮點數也是不例外的。
如何讓"/"和"//"進行分工
在默認情況下,這兩種運算符有很大的重疊地方,比如,當兩個數都是整數的時候,兩者的運算結果是沒有區別的。如果想在python中讓這兩種有一個明確的分工。即"/"可以用於float除法,"//"用於整除法,我們可以在程序開始的時候做以下聲明:
-
from __future__ import division
-
聲明后測試的結果(以下測試的版本是python2.7)
-
-
-
1.5
-
-
1.5
-
-
1.5
-
-
1.5
-
-
1
-
-
1.0
-
-
1.0
-
-
1.0
-
-
-5.5
-
以上,我們可以知道,做這個聲明以后,"/"進行的將是float除法而不是整除法。
還需要注意的是,在pyhton3中,"/"表示的就是float除,不需要再引入模塊,就算分子分母都是int,返回的也將是浮點數