模数如何与负整数一起工作?

时间:2014-04-06 18:36:12

标签: java math modulus

我正在运行for循环,在我的循环中我有以下内容:

for(int i = 0; i < 12; i = i + 2){
        System.out.println("i = " + i);
        System.out.print("3 - i % 3 (i is at " + i + ") = " + (3 - i % 3));
        System.out.println();
        System.out.println("3 - i (" + (i) + ") = " + (3 - i));
    }

我确实理解Modulus如何正常工作或正数,但我不明白它如何与负整数一起工作? 有人可以向我解释一下吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

a mod b非常适用于正整数ab。如果ab为否定怎么办?有三种选择与基本定义一致:

  1. a mod b总是积极的。
  2. a mod ba具有相同的符号。
  3. a mod bb具有相同的符号。
  4. 不同的语言将选择这三种选择之一。没有单一的正确答案。

答案 1 :(得分:1)

 4 %  3 ==  1
-4 %  3 == -1
 4 % -3 ==  1
-4 % -3 == -1

更改第一个数字的符号会更改结果的符号。第二个数字的符号无关紧要。

在许多语言(C,C ++,Java,Javascript)中都是如此,但并非所有语言(Python,Ruby)都是如此。