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
在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