如何在python 2.7中轻松实现类似C的模数(余数)运算

时间:2015-12-15 14:28:44

标签: python c modulo

负数上的模运算符%在python和C中以不同的方式实现。在C: -4 % 3 = -1,而在python中:-4 % 3 = 2

我知道如何在C中实现类似python的模数。我想知道如何反过来,即:在python中轻松实现类似C的模数。

2 个答案:

答案 0 :(得分:1)

  

在python中轻松实现类似C的模数。

由于C在整数被分割时截断为零,因此余数的符号始终是第一个操作数的符号。有几种方法可以实现这一点;选择一个你喜欢的: def mod(a, b): return abs(a)%abs(b)*(1,-1)[a<0] def mod(a, b): return abs(a)%abs(b)*(1-2*(a<0))

答案 1 :(得分:0)

如果结果为负,只需将模块添加到结果中:

int mymod(int a, int b) {
   int res = a % b;
   if (res < 0)
      res += b;
   return res;
}

编辑:反之亦然:

def mymod(a, b):
    res = a % b
    if (a < 0):
        res -= b
    return res