使用其中一种有什么好处吗?在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:更改除法运算符。
其他回答
在Python 3中。X, 5 / 2返回2.5 5 // 2返回2。前者是浮点除法,后者是浮点除法,有时也称为整数除法。
在Python 2.2或更高版本的2。x行,对于整数没有区别,除非执行from __future__导入除法,这将导致Python 2。X采用3。x的行为。
无论将来导入什么,5.0 // 2都将返回2.0,因为这是操作的下限除法结果。
您可以在PEP 238:更改除法操作符中找到详细说明。
总结
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)。 当意义的丧失不可忽视时,我们会得到错误的结果。
>>> print 5.0 / 2
2.5
>>> print 5.0 // 2
2.0
//是楼层划分。它总是会给你结果的底值。 另一个,/,是浮点除法。
下面是/和//之间的区别; 我在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 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)