除法運算子/在Python2和Python3中的區別

pythontab發表於2017-12-27

在Python2中,除法的取值結果取整數

>>> 7/3
2

即一個整數(無小數部分的數)被另外一個整數除,計算結果的小數部分被截除了,只留下了整數部分。

在Python3中,除法/的結果包含小數

注意:無論除數和被除數是任何型別都會保持小數部分,即使整除也會表示為浮點數形式

例如:

>>> 7/3
2.3333333333333335
>>> 4/2
2.0


如果想實現Python2中的功能,得到相同的結果,只取整數需要使用//

例如:

>>> 7//3
2
>>> 4//2
2


在python2中需要實現與python3相同功能的除法,有兩種方法:

方法1. 匯入division模組

from __future__ import division
>>> 7/3
2.3333333333333335
>>> 4/2
2.0

方法2: 用實數代替整數進行運算

實數即包含小數點的數, 實數在Python中被稱為浮點數(Float),只要參與運算的數字中有一個是浮點數,則為浮點數運算,運算結果亦為浮點數,也就不會截除小數部分

>>> 7/3.0
2.3333333333333335
>>> 7.0/3
2.3333333333333335
>>> 7.0/3.0
2.3333333333333335
>>>


總結:

開發中涉及到數值精度的問題,往往會導致意想不到的bug,所以大家要注意Python2和Python3在處理除法運算時的區別, 避免開發中遇到問題。


相關文章