在Python 2.x中,整数除法-7 / 3应该输出-2,对吗?。理由:因为分子和分母都是整数,所以执行除法,并且十进制后的数字被截断。所以在这里案件, -7 / 3 = -2.3333333 ....所以,python应该输出-2.but它给出输出-3.can任何人请解释原因?
答案 0 :(得分:4)
“和十进制后的数字被截断”
没有。那不是真的。 Python 2.x实现了整数的底层划分(//
是python2.x和python3.x中的底层划分)。对于正数,这与截断小数点后的数字相同。但是对于负数,您会得到不同的结果(正如您所注意到的那样)。
请注意,这与使用C
时的行为不同(例如)。 Guido在this blog post
整数除法运算(//)及其兄弟,模运算(%),一起来满足一个很好的数学关系(所有变量都是整数):
a / b = q,其余为r
这样
b * q + r = a且0 <= r&lt; B'/ P>
(假设a和b> = 0)。
如果你希望关系延伸为负a(保持b为正),你有两个选择:如果你将q截断为零,r将变为负数,因此不变量变为0&lt; = abs(r) &LT;否则,你可以将q置于负无穷大,并且不变量保持为0&lt; = r&lt;湾
在数学数论中,数学家总是喜欢后者的选择......
答案 1 :(得分:1)
重要的是要认识到-7/3
被解析为(-7)/3
而非-(7/3)
,因此在其他答案中解释的楼层划分规则导致商评估为{{1} }。
答案 2 :(得分:0)
>>> 7/2
3
>>> -7/2
-4
>>> 7/3
2
>>> -7/3
-3
>>>
你在分割后得到最低值,因此负数-3是底值,-2是ceil值,因为-3 <-2
答案 3 :(得分:0)
我猜Python 2.7会自动给出楼层值。
您可以import numpy
然后执行np.ceil(-7/3)