作为伪代码中的一个例子:

if ((a mod 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

当前回答

虽然可以通过检查值是否为负并纠正它(许多人建议的方法)来进行适当的模运算,但还有一个更紧凑的解决方案。

(a % b + b) % b

这将首先进行模运算,将值限制在-b -> +b范围内,然后加上b以确保值为正,让下一个模运算将其限制在0 -> b范围内。

注:如果b为负数,结果也是负数

其他回答

在Java中,它是%操作符: 15.17.3. 剩余运算符%

注意,在java.lang.Math类中还有floorMod,对于不同符号的参数,它会给出与%不同的结果:

floorMod (int x, int y)

对于非负整数,可以使用余数运算符%,而不是语义略有不同的模运算符。具体的例子是:

if ((a % 2) == 0)
{
    isEven = true;
}
else
{
    isEven = false;
}

这可以简化为一行代码:

isEven = (a % 2) == 0;

另外,mod可以这样使用:

int a = 7;
b = a % 2;

B等于1。因为7% 2 = 1。

正如其他人指出的那样,%(余数)操作符与数学上的操作符不同 模量运算/函数。

Mod vs % x mod n函数在[0,n)范围内将x映射到n。 而x % n操作符在(-n,n)范围内将x映射到n。

为了有办法用数学上的模运算和不运算 关心x前面的符号1可以用:

((x % n) + n) % n

也许这张图有助于更好地理解它(我一开始很难理解它)

下面是用最少的Java代码表示的伪代码;

boolean isEven = a % 2 == 0;

现在我将把它分解成各个部分。Java中的模运算符是百分比字符(%)。因此,取一个int % int返回另一个int。双等号(==)操作符用于比较值,例如一对int,并返回一个布尔值。然后将其分配给布尔变量'isEven'。根据运算符优先级,在比较之前计算模量。