Python中的负数取余问题

2023-11-01

12 % 5, -12 % 5
# output
# (2, 3)

在数学里,"负数取余"遵循的是:

如果 a 与 d 是整数,d 非零,那么余数 r 满足 a = q * d + r, q 为整数,且 0 <= |r| < |d|。

由此可见,我们的被除数 a = 12, 我们的商 d = 5,那么有两个余 r 满足条件,分别是一个负的余数 r1 = -2 和正的余数 r2 = 3,并且总有规律 r1 + r2 = d。

在计算机语言中,同号的整数运算,所有语言都遵循尽量让商小的原则,所以 12 mod 5 和 -12 mod -5 是一样的方式,结果差一个符号,分别是 `2` 和 `-2`。但是在异号的整数运算中,C 和 Java 都是尽可能让商 d 更大[1] (例如 -12 mod 5 的结果对应的是商 d = -2,余 r = -2),而 Python 则是会让商尽可能的小(例如 -12 mod 5 的结果对应的是商 d = -3,余 r = 3)。

举例图示如下:

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的负数取余问题 的相关文章

  • css 字体间距 设置

    一 css word spacing属性设置字间距 单词的间距 word spacing 属性增加或减少单词间的空白 即字间隔 在这个属性中 字 定义为由空白符包围的一个字符串 也就是说该属性是以空格为基准进行调节间距的 如果多个字母被连在

随机推荐