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
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP