Python 中的除法運算子?


通常,表示式的型別取決於引數的型別。此規則適用於大多數運算子:例如,當我們新增兩個整數時,結果應為整數。但是,在除法的情況下,這並不適用,因為存在兩種不同的預期。有時我們希望除法生成精確的浮點數,而其他時候我們希望得到一個向下取整的整數結果。

通常,python 中的除法運算子(/) 僅取決於引數。例如,在 python 2.7 中,20/7 的結果為 2,因為兩個引數都是整數。但是,20./7 將生成 2.857142857142857 作為輸出,因為引數是浮點數。

以上 ‘/’ 的定義通常會導致應用程式出現問題,因為在這些應用程式中使用了作者未預期的型別。

考慮一個簡單的程式,將攝氏溫度轉換為華氏溫度,它將根據輸入產生兩個不同的結果。如果一個使用者提供整數引數 (18),而另一個使用者提供浮點數引數 (18.0),則答案完全不同,即使所有輸入都具有相同的數值。

#Conversion of celcius to Fahrendheit in python 2.6
>>> print 18*9/5 + 32
64
>>> print 18.0*9/5 + 32
64.4
>>> 18 == 18.0
True

從上面我們可以看到,當我們傳遞 18.0 時,我們得到了正確的輸出;而當我們傳遞 18 時,我們得到了錯誤的輸出。這種行為是由於在 python 2.x 中,“/” 運算子在所有引數都是整數的情況下充當地板除法。但是,如果其中一個引數是浮點值,“/” 運算子將返回浮點值。

顯式轉換函式(如 float(x))可以幫助防止這種情況。但是,想法是讓 python 成為一種簡單且精簡的語言,無需大量轉換來涵蓋意外資料型別的罕見情況。從 Python 2.2 版本開始,添加了一個新的除法運算子以澄清預期內容。普通的 / 運算子將來將返回浮點結果。一個特殊的除法運算子 // 將返回向下取整的結果。

>>> # Python 2.7 program to demonstrate the use of "//" for both integers and floating point number
>>> print 9//2
4
>>> print -9//2
-5
>>> print 9.0//2
4.0
>>> print -9.0//2
-5.0

Python 3.x 中的除法運算

在 python 3.x 中,消除了上述缺陷,並且 ‘/’ 運算子對整數和浮點數引數都執行浮點除法。

>>> #Conversion of celcius to Fahrendheit in python 3.x
>>> #Passing 18 (integer)
>>> print (18*9/5 + 32)
64.4
>>> #Passing 18.0(float)
>>> print(18.0*9/5 + 32)
64.4

此外,當我們傳遞正數或負數引數時,沒有區別。

>>> print(9/2)
4.5
>>> print(-9/2)
-4.5
>>> print(9.0/2)
4.5
>>> print(-9.0/2)
-4.5

更新於: 2019-07-30

1K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.