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

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

当前回答

双斜杠//是层划分:

>>> 7//3
2

其他回答

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)

Python 2。x澄清:

为Python阐明2。X线,/既不是层除法也不是真除法。

当两个参数都为int时,/为整除;但当其中一个参数为float时,/为真除法。

>>> print 5.0 / 2
2.5

>>> print 5.0 // 2
2.0

总结

x//y:精确的整数除法 int(x/y) OR math.floor(x/y):不精确的整数除法(但几乎正确) X /y:浮点除法(没有意义)

显著计算结果

import math
N = 1004291331219602346 # huge number 

print(N//100) #=> 10042913312196023 is correct answer
print(math.floor(N/100)) #=> 10042913312196024 is wrong answer
print(math.ceil(N/100)) #=> 10042913312196024 is wrong answer
print(int(N/100)) #=> 10042913312196024 is wrong answer

考虑

考虑int(x/y)的取值。 首先,Python计算表达式x/y并得到不精确的浮点数z。 其次,Python计算表达式int(z)。 当意义的丧失不可忽视时,我们会得到错误的结果。

5.0//2的结果是2.0,而不是2,因为//操作符返回值的返回类型遵循Python强制转换(类型强制转换)规则。

Python促进低数据类型(整数)到高数据类型(浮点数)的转换,以避免数据丢失。