Java中Math.floorMod()和%之间的区别

Hui*_*Lin 3 java methods operators

有人可以告诉我Math.floorMod()和Java中%的区别吗?

我当时很困惑

    int a = 3;
    int b = -2;
    System.out.println(a % b);
    System.out.println(Math.floorMod(a,b));
Run Code Online (Sandbox Code Playgroud)

结果是1 -1而不是1 1

Sca*_*bat 5

根据javadocs

如果参数的符号相同,则floorMod和%运算符的结果相同。

floorMod(4, 3) == 1;   and (4 % 3) == 1
Run Code Online (Sandbox Code Playgroud)

如果参数的符号不同,则结果与%运算符不同。

floorMod(+4, -3) == -2;   and (+4 % -3) == +1
floorMod(-4, +3) == +2;   and (-4 % +3) == -1
floorMod(-4, -3) == -1;   and (-4 % -3) == -1
Run Code Online (Sandbox Code Playgroud)