1. 程式人生 > >python2.x與3.x除法的區別

python2.x與3.x除法的區別

v2.2 以前,除(“/”)運算子的返回有兩種可能情況,分別是整型和浮點型。運算元的不同,是影響計算結果資料型別的關鍵。
以 a / b 為例,a、b均為整型,則結果返回整型;a、b任意一個是浮點型的話,則結果就是浮點型。
===========================
# python v2.7
>>> 3 / 2, 3.0 / 2, 3.0 / 2.0
(1, 1.5, 1.5)
===========================

在某些場合,我們可能會期待 a / b 返回浮點型,可是由於某些不確定的因素,參與運算的 a 和 b都是整型,這可能會帶來錯誤,顯然有精度上的損失。

v2.2 以後,引入了“地板除”(“//”)運算子,從數值上講,它返回小於除法運算結果的最大整數;從型別上講,與"/"運算子返回型別邏輯一致。

而“/”運算子,沒有變化。
===========================
# python v2.7
>>> 3 / 2, 3.0 / 2, 3 // 2, 3.0 // 2
(1, 1.5, 1, 1.0)
===========================

v3.x 以後,“/”運算子被命名為“真除”,不再依據運算元型別選擇返回值型別,保證計算結果數值上的精度是第一位的。所以,無須再把運算元轉變成浮點型,以保證運算結果不被截斷小數部分。
“//”運算子,不變。
===========================
# python v3.2
>>> 3 / 2, 3.0 / 2, 3 // 2, 3.0 // 2

(1.5, 1.5, 1, 1.0)
===========================