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

时间:2012-02-08 22:36:48

标签: java android modulo

如果我尝试

int a=(-2)%6

我得-2而不是4

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

2 个答案:

答案 0 :(得分:28)

%在Java中执行余数操作。

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

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

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

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

private int mod(int x, int y)
{
    int result = x % y;
    if (result < 0)
        result += y;
    return result;
}

答案 1 :(得分:10)

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

int remainder = 7 % 3;  // will give 1
int remainder2 = 6 % 2; // will give 0

获得模数:

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