在Python中,除法有兩種:/和//。
X / Y
對於Python2.X來說,如果兩個操作數都是整數,那么結果將向下取整(這個和C里面的不同,C里面是向0取整),也就是說,如果結果本來是-2.5,那么向下取整為-3,如果結果本來是2.5,那么向下取整為2;如果兩個操作數有浮點數,那么就是浮點數除法,結果就是浮點數除法;對於Python3.X來說,不管操作數有沒有浮點數,都是浮點數除法:
5 / -2 #2.X 商:-3 余數:-1 #3.X 商:-2.5 余數:-1 #C 商:-2 余數:1 5.0 / -2 #2.X 商:-2.5 余數:-1.0 #3.X 商:-2.5 余數:-1.0 #C 商:-2.5 余數:C中的%取余運算符不支持浮點數類型
上面比較有意思的是對於%取余運算,在Python中,和C語法不同的是,取余運算符支持浮點數運算,並且如果操作數有浮點數,那么返回的結果類型也是浮點型。
X // Y
//運算對於Python2.X和Python3.X來說,效果是一樣的,無論操作數都是整數,還是包括浮點數,//都會向下取整,當然對於有浮點數的計算,結果仍會以浮點數形式返回,比如-5.0 // 2,結果是-3.0:
-5 // 2 #2.X 商:-3 余數:1 #3.X 商:-3 余數:1 #C 商:-2 余數:-1 -5.0 // 2 #2.X 商:-3.0 余數:1.0 #3.X 商:-3.0 余數:1.0 #C 商:-2.5 余數:C的取余運算不支持浮點數
通過上面的例子可以知道,在Python中,余數的符號和除數相同(而在C中,余數的符號和被除數相同),有了這一點,就可以算出商的大小和符號