python中整除后結果也是小數


有人這么回答,這顯然不對

image-20211119215551260

先看個例子:

image-20211119215533014

 ‘//’明明是整除,為什么結果不是整數,而會出現小數?

首先,關於除法有三種概念:傳統除法、精確除法和地板除

#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對於‘//’的運算規則


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM