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