Python 中的 float 除法和整除法,有需要的朋友可以参考下。
从 python2.2 开始,便有两种除法运算符:”/”、”//”。两者最大区别在:
- python2.2 前的版本和 python2.2 以后 3.0 以前的版本的默认情况下,”/” 所做的除法是以一种两个数或者多个数出现一个浮点数结果就以浮点数的形式表示,即 float 除法
- “//” 所做的除法则不相同,”//” 不管两者出现任何数,都以整除结果为准,不对小数部分进行处理,直接抛弃,也就是整除法
以下是在编译器测试的数据,测试的版本是 python2.7
关于”/”:
1 | 3/2 |
由以上的例子我们可得出,只要除数中有一个数是浮点数,那么得到的结果也是浮点数
以下是关于”//”:
1 | 3//2 |
由以上的例子,我们可以看出,两个整型相除,得到的还是整型,但是。如果一个浮点数除以一个非浮点数得到的还会是一个浮点数,但是,计算的结果却是忽略小数部分,运算的结果类似两个整型相除,但是得到一个浮点数。另外”//” 对于两个浮点数也是不例外的。
如何让”/” 和”//” 进行分工
在默认情况下,这两种运算符有很大的重叠地方,比如,当两个数都是整数的时候,两者的运算结果是没有区别的。如果想在 python 中让这两种有一个明确的分工。即”/” 可以用于 float 除法,”//” 用于整除法,我们可以在程序开始的时候做以下声明:
1 | from __future__ import division |
声明后测试的结果(以下测试的版本是 python2.7)
1 | from __future__ import division |
以上,我们可以知道,做这个声明以后,”/” 进行的将是 float 除法而不是整除法。
还需要注意的是,在 pyhton3 中,”/” 表示的就是 float 除,不需要再引入模块,就算分子分母都是 int,返回的也将是浮点数。