使用其中一种有什么好处吗?在Python 2中,它们似乎都返回相同的结果:

>>> 6/3
2
>>> 6//3
2

当前回答

正如大家已经回答的,//是楼层划分。

这一点之所以重要,是因为//在2.2开始的所有Python版本中,包括Python 3,都是明确的层划分。x版本。

行为的改变取决于:

是否激活__future__导入(module-local) Python命令行选项,-Q old或-Q new

其他回答

方程的答案四舍五入到下一个较小的整数或以。0作为小数点的浮点数。

>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0

前面的答案都很好。我想再补充一点。在某些情况下,它们会得到相同的商。之后,除法运算符(//)可以正常工作,但除法(/)运算符不行:

>>> int(755349677599789174 / 2) # Wrong answer
377674838799894592
>>> 755349677599789174 // 2     # Correct answer
377674838799894587

正如大家已经回答的,//是楼层划分。

这一点之所以重要,是因为//在2.2开始的所有Python版本中,包括Python 3,都是明确的层划分。x版本。

行为的改变取决于:

是否激活__future__导入(module-local) Python命令行选项,-Q old或-Q new

双斜杠//是层划分:

>>> 7//3
2

//实现“楼层划分”,不管你的类型是什么。所以 1.0/2.0会得到0.5,但是1/2 1//2和1.0//2.0都会得到0。

详见PEP 238:更改除法运算符。