Python中负数的模运算
作者:互联网
我在Python中发现了一些关于负数的奇怪行为:
>>> -5 % 4
3
谁能解释一下发生了什么?
解决方法:
与C或C不同,Python的模运算符(%)总是返回一个与分母(除数)具有相同符号的数字.你的表达式得到3因为
(-5) % 4 = (-2 × 4 + 3) % 4 = 3.
它是根据C行为选择的,因为非负结果通常更有用.一个例子是计算工作日.如果今天是星期二(第2天),那么N天前的星期几是多少?在Python中我们可以使用
return (2 - N) % 7
但在C中,如果N≥3,我们得到一个负数,这是一个无效数字,我们需要通过添加7来手动修复它:
int result = (2 - N) % 7;
return result < 0 ? result + 7 : result;
(有关如何确定不同语言的结果符号,请参阅http://en.wikipedia.org/wiki/Modulo_operator.)
标签:python,modulo,negative-number 来源: https://codeday.me/bug/20190915/1805784.html