// 和 // 运算符功能相同

/ and // operator functioning the same

我在与这些新运营商打交道时遇到了麻烦。输出显示它们相等,但我不明白为什么。在像 C 这样的语言中,这些不会产生相同的结果。

这是我的代码

x = 6
y = 4
t = 3
print " %f e %f" % (x//y, x/y)

输出是这样的:

1.000000 e 1.000000

在 Python 2 中,两个整数相除得到一个整数,就像在 C 中一样。使用 /// 并不重要.

在 Python 3 中,两个整数相除 / 的结果是浮点数,但 // 的结果是整数。

根据代码中的 print 语句,您正在使用 Python 2.

这里的故事比 多得多。在 Python 2.7 中,您可能期望 / 截断,并且 // 楼层,这有时会导致不同的答案,即使在这两种情况下输出都被强制为 int。根本不是这样。

Python 2中,两个运算符的输出都是整数,无论​​输入的符号如何,两者的结果都是一样的。

Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.8.2] on linux
 > (6/4, 6//4)
=> (1, 1)
 > (-6/4, -6//4)
=> (-2, -2)
 > (6/-4, 6//-4)   # Shouldn't really be different than the above
=> (-2, -2)        # ... and, isn't.

使用Python 3,可以看出它们确实执行了不同的操作。具体来说,/ 根本不四舍五入。

Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
 > (6/4, 6//4)
=> (1.5, 1)
 > (-6/4, -6//4)
=> (-1.5, -2)
 > (6/-4, 6//-4)
=> (-1.5, -2)

这些运算符对于 Python 2 或 Python 3 似乎都没有很好的记录,正如我在之前对该问题的评论中提到的那样,因此任何行为都可以被认为是“正确的” ."