0%

-7 除以 4 的整数商是 -1 还是 -2 ?

在 C/C++ 、Java 中结果为 -1,在 Python 中结果为 -2。为什么会这样?

说明

我们都知道,在 C/C++ 、Java 中,运算符 / 两边若都为整数,则结果也会是整数。例如:

1
2
# C/C++ 、Java
>>> 7 / 4 = 1

但在 Python 中,运算符 / 的结果是浮点数,要想得到整数商,需要用到“地板除运算符”://

1
2
3
4
5
# Python 3.7.0
>>> 7 / 4 = 1.75
>>> 8 / 4 = 2.0
>>> 7 // 4 = 1
>>> 8 // 4 = 2

对于异号的整数相除,C/C++、Java 和 Python 的结果也是不一样的:

1
2
# C/C++ 、Java
>>> -7 / 4 = -1
1
2
# Python 3.7.0
>>> -7 // 4 = -2

可以看到,在计算异号相除的整数商时,C/C++、Java 会向 0 方向舍入;而 Python 会向负无穷方向舍入。其实这也是造成它们的运算符 % 结果也不一样的原因。详细请看我的另一文章:运算符 % 是取余还是取模?

觉得文章有帮助,打赏1元鼓励一下作者