Python
中除法有兩種運(yùn)算符:
’/’
和
’//’
;有三種類型的除法:傳統(tǒng)除法、
Floor
除法和真除法。
X / Y
類型:
在Python2.6
或者之前,這個操作對于整數(shù)運(yùn)算會省去小數(shù)部分,而對于浮點(diǎn)數(shù)運(yùn)算會保持小數(shù)部分;在
Python3.0
中變成真除法(無論任何類型都會保持小數(shù)部分,即使整除也會表示為浮點(diǎn)數(shù)形式)。
示例代碼:
>>>3//2
1
>>>3//2.0
1.0
>>>4//2
2
>>>4//2.0
2.0
Python 3.4
版本中結(jié)果:
>>>3/2
1.5
>>>3/2.0
1.5
>>>4/2
2.0
>>>4/2.0
2.0
X // Y 類型
:
Floor
除法:在
Python 2.2
中新增的操作,在
Python2.6
和
Python3.0
中均能使用,這個操作不考慮操作對象的類型,總是省略小數(shù)部分,剩下最小的能整除的整數(shù)部分。
示例代碼:
Python 2.7
版本中結(jié)果:
>>>3//2
1
>>>3//2.0
1.0
>>>4//2
2
>>>4//2.0
2.0
Python 3.4
版本中結(jié)果(與
2.7
版本一樣):
>>>3//2
1
>>>3//2.0
1.0
>>>4//2
2
>>>4//2.0
2.0
概括來講:
在Python 2.6
中,
’/’
執(zhí)行傳統(tǒng)除法,如果操作數(shù)都是整數(shù)的話,執(zhí)行截?cái)嗟恼麛?shù)除法(即對于結(jié)果只保留整數(shù)部分),否則,執(zhí)行浮點(diǎn)除法(保留余數(shù));
’//’
執(zhí)行
Floor
除法,與
Python3.0
一樣,對于整數(shù)執(zhí)行截?cái)喑?,浮點(diǎn)數(shù)執(zhí)行浮點(diǎn)除法。
在Python 3.0
中,
’/’
總是執(zhí)行真除法,不管操作數(shù)的類型,都會返回包含任何余數(shù)的浮點(diǎn)結(jié)果;
’//’
執(zhí)行
Floor
除法,截除掉余數(shù)并且針對整數(shù)操作數(shù)返回一個整數(shù),如果有任何一個操作數(shù)是浮點(diǎn)數(shù),則返回一個浮點(diǎn)數(shù)。
補(bǔ)充:
Floor除法
:效果等同于math
模塊中的
floor
函數(shù):
math.floor(x)
:返回不大于
x
的整數(shù)
所以當(dāng)運(yùn)算數(shù)是負(fù)數(shù)時:結(jié)果會向下取整。
>>>5//3#1.6666666666666667
1
>>>-5//3
-2
>>>
與floor()
函數(shù)類似的還有很多,比如
trunc()函數(shù)
:
>>>importmath
>>>math.trunc(-1.6)
-1
>>>math.trunc(1.6)
1
來源:簡書