负数上的模运算符%
在python和C中以不同的方式实现。在C:
-4 % 3 = -1
,而在python中:-4 % 3 = 2
。
我知道如何在C中实现类似python的模数。我想知道如何反过来,即:在python中轻松实现类似C的模数。
答案 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