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

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

当前回答

/→浮点除法

//→楼层划分

让我们看看Python 2.7和Python 3.5中的一些例子。

Python 2.7.10 vs. Python 3.5

print (2/3)  ----> 0                   Python 2.7
print (2/3)  ----> 0.6666666666666666  Python 3.5

Python 2.7.10 vs. Python 3.5

print (4/2)  ----> 2         Python 2.7
print (4/2)  ----> 2.0       Python 3.5

现在,如果你想拥有(在Python 2.7中)与Python 3.5相同的输出,你可以执行以下操作:

Python 2.7.10

from __future__ import division
print (2/3)  ----> 0.6666666666666666   # Python 2.7
print (4/2)  ----> 2.0                  # Python 2.7

然而在Python 2.7和Python 3.5中,层划分没有任何区别。

138.93//3 ---> 46.0        # Python 2.7
138.93//3 ---> 46.0        # Python 3.5
4//3      ---> 1           # Python 2.7
4//3      ---> 1           # Python 3.5

其他回答

/→浮点除法

//→楼层划分

让我们看看Python 2.7和Python 3.5中的一些例子。

Python 2.7.10 vs. Python 3.5

print (2/3)  ----> 0                   Python 2.7
print (2/3)  ----> 0.6666666666666666  Python 3.5

Python 2.7.10 vs. Python 3.5

print (4/2)  ----> 2         Python 2.7
print (4/2)  ----> 2.0       Python 3.5

现在,如果你想拥有(在Python 2.7中)与Python 3.5相同的输出,你可以执行以下操作:

Python 2.7.10

from __future__ import division
print (2/3)  ----> 0.6666666666666666   # Python 2.7
print (4/2)  ----> 2.0                  # Python 2.7

然而在Python 2.7和Python 3.5中,层划分没有任何区别。

138.93//3 ---> 46.0        # Python 2.7
138.93//3 ---> 46.0        # Python 3.5
4//3      ---> 1           # Python 2.7
4//3      ---> 1           # Python 3.5

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

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

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

这一点之所以重要,是因为//在2.2开始的所有Python版本中,包括Python 3,都是明确的层划分。x版本。

行为的改变取决于:

是否激活__future__导入(module-local) Python命令行选项,-Q old或-Q new

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)

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

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