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

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

当前回答

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

>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.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)

双斜杠//是层划分:

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

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

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