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

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

当前回答

//是楼层划分。它总是会给你结果的底值。 另一个,/,是浮点除法。

下面是/和//之间的区别; 我在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

其他回答

>>> print 5.0 / 2
2.5

>>> print 5.0 // 2
2.0

Python 3

操作 结果 笔记 X / y x和y的商 X // y x和y的底商 (1) 注: 也称为整数除法。结果值是一个整型,尽管结果的类型不一定是int。结果总是趋近于负无穷:1//2等于0,(-1)//2等于-1,1//(-2)等于-1,(-1)//(-2)等于0。

Python 2

Operation Result Notes x / y quotient of x and y (1) x // y (floored) quotient of x and y (4)(5) Notes: 1. For (plain or long) integer division, the result is an integer. The result is always rounded towards minus infinity: 1/2 is 0, (-1)/2 is -1, 1/(-2) is -1, and (-1)/(-2) is 0. Note that the result is a long integer if either operand is a long integer, regardless of the numeric value. 4. Deprecated since version 2.3: The floor division operator, the modulo operator, and the divmod() function are no longer defined for complex numbers. Instead, convert to a floating point number using the abs() function if appropriate. 5. Also referred to as integer division. The resultant value is a whole integer, though the result’s type is not necessarily int.

在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:更改除法操作符中找到详细说明。

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

这一点之所以重要,是因为//在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