整数除法:对于所有整数a,b,// b == int(a/b)为真?

Mar*_*som 6 python integer-division python-3.x

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

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

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

Omn*_*ous 10

在Python 3中不是这样,你可以自己测试它:

>>> int(-1/3) == -1//3
False
Run Code Online (Sandbox Code Playgroud)

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

这将永远是真正的Python 2除非你做from __future__ import division,但是这是因为a/b == a//b,如果ab在Python 2的整数.