Mod java 中的负数运算符不起作用?

Mod operator in java for negative number is not working?

在Java我试过

-1 % 20  

预期为 return -1...但实际值为 19。
谁能帮帮我?

-1 不能被 20 整除所以结果是 -1 正如预期的那样

模运算在语义上与整数除法紧密相关,因为以下等式应始终成立:

x = a * (x / a) + (x % a)

并且由于 -1 / 20 是 Java 中的 0,这意味着 -1 % 20 应该是 -1 才能使等式成立。如果您谈论的是自然数中的残数 class,您可以将 -1 解释为 19,但残数 class 在数学上不受模运算符的约束。

如果你想要一个肯定的结果,你可以包裹mod。

public static int PositiveMod(int value, int mod)
{
    return ((value % mod + mod) % mod);
}

int result = PositiveMod(-1, 20); //Returns 19