Android:哪个运算符为模数(%不适用于负数)

Pri*_*alj 8 java android modulo

如果我试试

int a=(-2)%6
Run Code Online (Sandbox Code Playgroud)

我得-2而不是4.

为什么它以负数表示这种方式?

Don*_*oby 30

% 在Java中执行余数操作.

要获得适当的模数,可以在函数中使用余数:

使用三元运算符进行符号修正是最短的:

private int mod(int x, int y)
{
    int result = x % y;
    return result < 0? result + y : result;
}
Run Code Online (Sandbox Code Playgroud)

对于那些不喜欢三元运算符的人来说,这是等价的:

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
        result += y;
    return result;
}
Run Code Online (Sandbox Code Playgroud)


emi*_*min 10

因为如果你将-2除以6,你将得到-2作为余数.%运算符将给出余数,如下所示;

int remainder = 7 % 3;  // will give 1
int remainder2 = 6 % 2; // will give 0
Run Code Online (Sandbox Code Playgroud)

获得模数:

    // gives m ( mod n )
public int modulo( int m, int n ){
    int mod =  m % n ;
    return ( mod < 0 ) ? mod + n : mod;
}
Run Code Online (Sandbox Code Playgroud)