使用其中一种有什么好处吗?在Python 2中,它们似乎都返回相同的结果:
>>> 6/3
2
>>> 6//3
2
使用其中一种有什么好处吗?在Python 2中,它们似乎都返回相同的结果:
>>> 6/3
2
>>> 6//3
2
当前回答
//实现“楼层划分”,不管你的类型是什么。所以 1.0/2.0会得到0.5,但是1/2 1//2和1.0//2.0都会得到0。
详见PEP 238:更改除法运算符。
其他回答
正如大家已经回答的,//是楼层划分。
这一点之所以重要,是因为//在2.2开始的所有Python版本中,包括Python 3,都是明确的层划分。x版本。
行为的改变取决于:
是否激活__future__导入(module-local) Python命令行选项,-Q old或-Q new
前面的答案都很好。我想再补充一点。在某些情况下,它们会得到相同的商。之后,除法运算符(//)可以正常工作,但除法(/)运算符不行:
>>> int(755349677599789174 / 2) # Wrong answer
377674838799894592
>>> 755349677599789174 // 2 # Correct answer
377674838799894587
//是楼层划分。它总是会给你结果的底值。 另一个,/,是浮点除法。
下面是/和//之间的区别; 我在Python 3.7.2中运行了这些算术运算。
>>> print (11 / 3)
3.6666666666666665
>>> print (11 // 3)
3
>>> print (11.3 / 3)
3.7666666666666667
>>> print (11.3 // 3)
3.0
Python 2.7和其他即将推出的Python版本:
部门(/)
左手操作数除以右手操作数
例如:4 / 2 = 2
楼层划分(//)
操作数的除法,其结果为除小数点后数的商。但如果其中一个操作数是负的,结果会被取整,即从零四舍五入(直到负无穷):
例子:9 / / 2 = 4和9.0 / / 2.0 = 4.0,-11 / / 3 = 4,-11.0 / / 3 = -4.0
/事业部和//楼层事业部操作符都以类似的方式操作。
5.0//2的结果是2.0,而不是2,因为//操作符返回值的返回类型遵循Python强制转换(类型强制转换)规则。
Python促进低数据类型(整数)到高数据类型(浮点数)的转换,以避免数据丢失。