我正在用%运算符在java和python中做一些计算。
在进行计算时,我发现在处理负数时,%运算符在两种语言中的工作方式不同。
,例如
-21 % 4 = -1 // Java
-21 % 4 = 3 # Python因此,我查看了这里关于堆栈溢出的一些帖子,发现在java中,%给出了余数,而在python中,%给出了模。它们对于正数都是相同的,但在负数的情况下给出了不同的结果,如上面的例子所示。
因此,我搜索了模和余数之间的差异,在网上阅读了一些帖子,但对我来说仍然不清楚余数和模之间的区别。
问题
有人能用上面的例子用简单的术语解释modulus和remainder之间的区别吗?
发布于 2019-10-01 14:41:35
在Python和Java等语言中,模块化操作符的实现是不同的。
在Java中,结果有派息的符号,但在Python中,这个符号来自除数。
要在Java中实现Python的结果,可以使用:
(n% m) + m) % m)
其中n是除数,m-除数。
int a = (((-21% 4) + 4) % 4);
System.out.println(a); //a=3发布于 2019-10-01 15:40:06
与C或C++或Java不同,Python的模块化运算符(%)总是返回与分母(除数)相同符号的数字。
示例
(-5) % 4 = (-2 × 4 + 3) % 4 = 3.(看见表示如何为不同语言确定结果符号。)
https://stackoverflow.com/questions/58186867
复制相似问题