我知道如果数字都是正数,整数除法将始终返回与浮点结果截断相同的答案。如果其中一个或两个都是负数,是真的吗?
我只是想知道是否有一个整数除法表达式会在 Python 2 和 Python 3 中返回相同的结果(是的,我知道from __future__ import division
)。
PS 让我们暂时忽略浮点溢出。
我知道如果数字都是正数,整数除法将始终返回与浮点结果截断相同的答案。如果其中一个或两个都是负数,是真的吗?
我只是想知道是否有一个整数除法表达式会在 Python 2 和 Python 3 中返回相同的结果(是的,我知道from __future__ import division
)。
PS 让我们暂时忽略浮点溢出。
在 Python 3 中并非如此,您可以自己测试一下:
>>> int(-1/3) == -1//3
False
整数除法和取模a
并分别b
给出q
(商) 和r
(余数) 将始终返回满足b*q + r == a
和(a*b)>0 == q>0
(即具有相同符号) 和 的a*b
数字。如果是浮点数,则表达式总是向 0舍入。q
abs(r) < abs(q)
int(q)
q
除非你这样做,否则对于 Python 2 来说总是如此from __future__ import division
,但那是因为a/b == a//b
ifa
和b
是 Python 2 中的整数。