【发布时间】:2020-11-10 15:16:34
【问题描述】:
我一直在使用模 %,但我注意到了一些差异。谁能解释一下为什么会这样:
# ruby
-123 % 10
> 7
-7 % 10
> 3
然后在 Java 中:
// Java
System.out.println(-123 % 10); // -3
System.out.println(-7 % 10); // -7
【问题讨论】:
-
因为它不是真正的模数,而是Java中的余数运算符stackoverflow.com/questions/90238/…
-
在数学上,模运算
mod n将数字拆分为等价类[z],z通常介于 0 和 n 之间(不包括)。在处理负数时,在mod 10的情况下,您可以使用等于[-3] == [7]的负数。因此,从数学上讲,两者都可以被视为正确的。只是计算方式不同。