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+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告