使用其中一个有什么好处吗?在Python 2中,它们似乎都会返回相同的结果:
>>> 6/3
2
>>> 6//3
2
使用其中一个有什么好处吗?在Python 2中,它们似乎都会返回相同的结果:
>>> 6/3
2
>>> 6//3
2
5 / 2
将返回2.5
,而5 // 2
将返回2
。前者是浮点数除法,后者是地板除法,有时也称为整数除法。from __future__ import division
,这会导致Python 2.x采用3.x的行为。5.0 // 2
将返回2.0
,因为这是该操作的地板除法结果。python -Qnew
。其他的除法选项包括:-Qold
(默认)、-Qwarn
和-Qwarnall
。 - John La Rooy5.0 / 2
和 5 / 2.0
均返回 2.5
,只有当两个操作数均为“int”时,旧行为才有所不同。 - Chris针对 Python 2.x 系列,/
既不是地板除法也不是真正的除法。
当两个参数都是 int
类型时,/
表示地板除法,但当 任意一个 参数为 float
类型时,表示真正的除法。
//
实现了“向下取整除法”,不管您的类型是什么。因此,1.0/2.0
将返回0.5
,但1/2
,1//2
和1.0//2.0
都将返回0
。
math.floor()
或math.fmod()
。 - Scott Lowrey/
和 //
是二元运算符(有两个操作数,左右、分子分母)。 - iono/ → 浮点数除法
// → 向下取整除法
让我们在Python 2.7和Python 3.5中看一些例子。
Python 2.7.10 vs. Python 3.5
print (2/3) ----> 0 Python 2.7
print (2/3) ----> 0.6666666666666666 Python 3.5
Python 2.7.10与Python 3.5的区别
print (4/2) ----> 2 Python 2.7
print (4/2) ----> 2.0 Python 3.5
现在如果你想要在Python 2.7中获得与Python 3.5相同的输出,可以执行以下操作:
Python 2.7.10
from __future__ import division
print (2/3) ----> 0.6666666666666666 # Python 2.7
print (4/2) ----> 2.0 # Python 2.7
Python 2.7和Python 3.5中的地板除法并没有区别。
138.93//3 ---> 46.0 # Python 2.7
138.93//3 ---> 46.0 # Python 3.5
4//3 ---> 1 # Python 2.7
4//3 ---> 1 # Python 3.5
-100 // 33
=> -4;100 // -33
=> -4;但由于 floor 函数的舍入方向,与前面的比较,下一个可能看起来违反直觉:-100 // -33
=> 3。 - Erdős-Bacon正如其他人已经回答的那样,//
是地板除法。
这很重要的原因是,在所有 Python 2.2 及其以上版本,包括 Python 3.x 版本中,//
的行为都是明确的地板除法。
/
的行为可能会因以下原因而变化:
__future__
导入与否(模块局部)-Q old
或 -Q new
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
Python 2.7及其他即将推出的版本:
/
)将左操作数除以右操作数。
示例: 4 / 2 = 2
//
)操作数相除,结果是去除小数点后的商。但如果其中一个操作数为负数,则向下取整,即远离零(朝负无穷大):
示例:9//2 = 4
和9.0//2.0 = 4.0
,-11//3 = -4
,-11.0//3 = -4.0
除法运算符/
和整数除法运算符//
的操作方式类似。
//
表示地板除法,总是返回结果的整数部分。另一种是“常规”除法。
//
表示地板除法:>>> 7//3
2
//
) 可以正常工作,但除法 (/
) 运算符不行:>>> int(755349677599789174 / 2) # Wrong answer
377674838799894592
>>> 755349677599789174 // 2 # Correct answer
377674838799894587
//
操作符来进行整数除法。 - Sriram