编程语言
首页 > 编程语言> > Python中负数的模运算

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