Python 中關于除法的三種運算符
/:表示精確的真除法。魔法方法為?truediv。
/ 無需介紹//:表示地板除。魔法方法為?floordiv。
// 被稱為地板除是因為其結果等價于對 / 的結果向下取整。設操作數 m 和 n 是整數,于是有關系m?//?n?=?floor(m?/?n)
即便 m 或 n 是負數時,這一關系依然成立。例如
In?:?5?//?2 Out:?2 In?:?-5?//?2 Out:?-3 In?:?5?//?-2 Out:?-3 In:?-5?//?-2 Out:?2
%:表示求模。魔法方法為?mod。
% 的結果與 // 的結果密切相關,它們一定滿足
q?=?m?//?n r?=?m?%?n q?*?n?+?r?=?m
所以 % 的結果可以通過 r = m - q * n 計算得到。例如 -5 % 2 就等于 1。Python 中的 divmod 函數能夠同時返回 // 和 % 的結果,方便我們觀察結果。例如
In?:?divmod(-5,?2) OUt:?(-3,?1)
再擴展一下,即便 m 或 n 是浮點數,結果依然遵循上面的計算流程,不過此時 // 和 % 的結果都會變成浮點型。例如
In?:?divmod(5.5,?2) Out:?(2.0,?1.5) In?:?divmod(-5.5,?2) Out:?(-3.0,?0.5)
此外可以觀察到,在地板除的定義下,除數 n 和模 r 總是同號的。其它語言中 /、//(如果有的話)和 % 行為可能跟 Python 不同,使用時需要多加小心。