使用其中一种有什么好处吗?在Python 2中,它们似乎都返回相同的结果:
>>> 6/3
2
>>> 6//3
2
使用其中一种有什么好处吗?在Python 2中,它们似乎都返回相同的结果:
>>> 6/3
2
>>> 6//3
2
当前回答
/→浮点除法
//→楼层划分
让我们看看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 vs. 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
其他回答
//是楼层划分。它总是会给你结果的整数底。另一种是“常规”除法。
双斜杠//是层划分:
>>> 7//3
2
Python 2.7和其他即将推出的Python版本:
部门(/)
左手操作数除以右手操作数
例如:4 / 2 = 2
楼层划分(//)
操作数的除法,其结果为除小数点后数的商。但如果其中一个操作数是负的,结果会被取整,即从零四舍五入(直到负无穷):
例子:9 / / 2 = 4和9.0 / / 2.0 = 4.0,-11 / / 3 = 4,-11.0 / / 3 = -4.0
/事业部和//楼层事业部操作符都以类似的方式操作。
/→浮点除法
//→楼层划分
让我们看看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 vs. 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
Python 3。x澄清
只是为了补充之前的一些答案。
必须指出的是:
A // b
是楼层划分。如: math.floor (a / b) 不是整数除法。如: int (a / b) 不是四舍五入到0的浮点除法。如: 轮(a / b, 0)
因此,当涉及到正数和负数时,行为方式是不同的,如下例所示:
1 // 2为0,即:
math.floor(1/2)
-1 // 2为-1,即:
math.floor(-1/2)