// 和 // 运算符功能相同
/ 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 似乎都没有很好的记录,正如我在之前对该问题的评论中提到的那样,因此任何行为都可以被认为是“正确的” ."
我在与这些新运营商打交道时遇到了麻烦。输出显示它们相等,但我不明白为什么。在像 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.
这里的故事比 /
截断,并且 //
楼层,这有时会导致不同的答案,即使在这两种情况下输出都被强制为 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 似乎都没有很好的记录,正如我在之前对该问题的评论中提到的那样,因此任何行为都可以被认为是“正确的” ."