6

我知道如果数字都是正数,整数除法将始终返回与浮点结果截断相同的答案。如果其中一个或两个都是负数,是真的吗?

我只是想知道是否有一个整数除法表达式会在 Python 2 和 Python 3 中返回相同的结果(是的,我知道from __future__ import division)。

PS 让我们暂时忽略浮点溢出。

4

1 回答 1

10

在 Python 3 中并非如此,您可以自己测试一下:

>>> int(-1/3) == -1//3
False

整数除法和取模a并分别b给出q(商) 和r(余数) 将始终返回满足b*q + r == a(a*b)>0 == q>0(即具有相同符号) 和 的a*b数字。如果是浮点数,则表达式总是向 0舍入。qabs(r) < abs(q)int(q)q

除非你这样做,否则对于 Python 2 来说总是如此from __future__ import division,但那是因为a/b == a//bifab是 Python 2 中的整数。

于 2012-10-11T16:01:58.037 回答