模数和余数之间的差异

时间:2019-10-01 14:21:32

标签: java python modulus

我正在%java中使用python运算符进行一些计算。

在进行计算时,我发现%运算符在处理负数时在两种语言中的工作方式有所不同。

例如

-21 % 4 = -1   // Java

-21 % 4 = 3    # Python

所以我查看了stackoverflow上的一些帖子,发现在java中,%给出了余数,而在python中,{{1 }}给出模量。如上例所示,它们对于正数都是相同的,但在负数的情况下会给出不同的结果。

所以我搜索了模量余数之间的区别,在线阅读了一些帖子,但是余数和模数之间的区别对我来说仍然不清楚

问题

有人可以使用上面的示例简单地解释%modulus之间的区别吗?

2 个答案:

答案 0 :(得分:0)

模运算符的实现在Python和Java之类的语言中有所不同。

在Java中,结果具有除数的符号,但在Python中,该符号来自除数。

要在Java中获得Python的结果,您可以使用:

  

(((((n%m)+ m)%m)

其中n是除数,m是除数。

int a = (((-21% 4) + 4) % 4);
    System.out.println(a);                //a=3

答案 1 :(得分:0)

C C ++ Java 不同,Python的模运算符(%)始终返回与分母符号相同的数字(除数) )。

示例

(-5) % 4 = (-2 × 4 + 3) % 4 = 3.

({See用于确定不同语言的结果符号。)