有人這么回答,這顯然不對
先看個例子:
‘//’明明是整除,為什么結果不是整數,而會出現小數?
首先,關於除法有三種概念:傳統除法、精確除法和地板除
#1、傳統除法:整數相除結果是整數,浮點數相除結果是浮點數
>>>4/2
2
>>>4.0/2
2.0
>>>4/2.0
2.0
#2、精確除法:無論操作數是整數還是浮點數,得到的商總是真實結果,總是得到浮點數
>>>4/2
2.0
>>>4.0/2
2.0
>>>4/2.0
2.0
#3、地板除:無論操作數是整數還是浮點數,得到的商不保留浮點數的尾數
>>>4//2
2
>>>4.0//2
2.0
但是!這三種除法概念在Python2.6和Python3.0中又有不同
Python2.6中,‘/’按照以上三種除法概念把結果分得更細:比如,整數相除結果為整數,只要有一個浮點數結果就是浮點數(Python2.6:>>>3/2輸出1);地板除‘//’(和Python3.0一樣):操作數為整數,整除結果為整數。否則操作數只要有一個浮點數,結果就為小數(這里小數和浮點數有區別,就是這個區別能解釋開頭引入例題)
Python3.0中,‘/’保留小數,這把‘/’的結果合並起來了,無論操作數是整數還是浮點數,結果總都是浮點數(Python3.0:>>>3/2輸出1.5);地板除‘//’(和Python2.6一樣):同上
因此,現在,就能解釋開頭引入的例題了
第一個運算得到的結果是保留尾數數值的浮點數(當然也屬於小數);而第二個運算,不保留尾數數值,直接截斷僅保留其整數數值,但是因為有一個操作數是浮點數,所以得到的結果是小數,這個就是Python3.0對於‘//’的運算規則