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

时间:2017-08-10 18:40:57

标签: python python-3.x operators

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

这是我的代码

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

输出是这样的:

  

1.000000 e 1.000000

2 个答案:

答案 0 :(得分:1)

在Python 2中,两个整数之间的除法产生一个整数,就像在C中一样。如果您使用///,则无关紧要。< / p>

在Python 3中,使用/的两个整数之间的除法会产生浮点数,但//会产生整数。

根据代码中的print语句,您使用的是Python 2。

答案 1 :(得分:1)

这里的故事要比type of the output更多。在Python 2.7中,您可能会期望NaN截断,以及/层,这有时会导致不同的答案,即使输出在两种情况下都被强制转换为int。事实并非如此。

Python 2中,两个运算符的输出都是积分的,无论输入的符号如何,两者的结果都是相同的。

//

使用Python 3,您可以看到它们确实执行了不同的操作。具体而言,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 2或Python 3,这些运算符似乎没有很好的文档记录,正如我之前在该问题的评论中所提到的,因此任何行为都可以被认为是“正确的”。