python 除法运算 比较奇怪,和别的程序语言不大一样。
算术运算符
对于数值型数据,常见的算术运算有加法、减法、乘法、除法,以及求幂和取模等,这些运算所对应的运算符分别为:
加法运算符:+,例如代数表达式2+3的Python表达式为2 + 3;
减法运算符:-,例如代数表达式2-3的Python表达式为2 - 3;
乘法运算符:*,例如代数表达式2×3的Python表达式为2 * 3;
除法运算符:/和//,例如代数表达式2÷3的Python表达式为2 / 3或2 // 3;
求幂运算符:**,例如代数表达式23的Python表达式为2 ** 3;
取模运算符:%,例如代数表达式2mod3的Python表达式为2 % 3;
在早期的版本中,Python只有一个除法运算符即/,该运算符既用于整除法,又用于真除法,这由参与运算的操作数的类型决定。具体而言,如果操作数皆为整数,那么就进行整除法运算,即两数相除后之后,只取其商的整数部分,并丢弃小数部分,不进行进位处理;此外,如果操作数中只要有一个为浮点数,那么就进行真除法运算,即得到的结果是一个精确的浮点数,包括小数点之后的数字。
从Python2.2开始,除法运算符除了/之外,又引入了一个除法运算符://,后一种运算符只用于进行整除法。对于除法运算符/,默认时的行为跟Python2.2之前的一样,它视操作数而定,既可以进行整除,也可以进行真除法。如果想让这两个运算符有一个明确的分工,即/只用于真除法,而//仅用于整除法的话,需要作以下声明:
from __future__ import division
>>>2/3
>>>0
>>>2//3
>>>0
>>>10/3
>>>3
>>>10//3
>>>3
>>>from __future__ import
division
>>>2/3
>>>0.66666666666666663
>>>2//3
>>>0
>>>10/3
>>>3.333333333333335
>>>10//3
>>>3
在声明之前,对表达式2/3进行计算时,结果为0,这是因为参加运算的两个操作数都是整数,所以运算符/进行的是整除法,但是表达式2.0/3的结果却是0.66666666666666663,这是因为操作数中的2.0是浮点数,所以运算符/进行的是真除法。表达式2//3和2.0//3进行求值时,进行的都是整除法,只不过返回值一个是整型,一个是浮点型而已。当我们用import语句进行相应的声明后,除法运算符/只能用于真除法,所以此时2/3和2.0//3的返回值都是0.66666666666666663。
在python 2中 '/' 除 和'//' 除 表示的都是Int整除
例如
>>> 11/2
5
>>> 3//2
1
但是通过使用语句
>>> from __future__ import division
可以改变这种状况 让'/'除变成float除
这里有一个小小的陷阱 当做负数的除法时 因为取整的关系 -11/2 得到的结果并不是想象中的-5 而是-6(取整
不是四舍五入)
>>> -11/2
-6
引入division后得到的结果是5.5
>>> -11/2
-5.5
这里需要注意
在Python 3中 '/' 除 表示的就是float除 不需要再额外引入模块,
即使分子分母都是int, 返回的也会是一个float浮点数