安卓系统:取模运算符是哪个(% 无法处理负数)

9
如果我尝试
int a=(-2)%6

我得到了-2而不是4

为什么负数会产生这种行为?

2个回答

37

% 在 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;
}

@don roby:这个运算符的意思是什么:返回result < 0吗?result + y :result;谢谢 - Mahdi
@Kenji - 请查看维基百科关于三元运算符 ?: 的页面 - Don Roby

12

因为如果你将-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;
}

好的,那么我在Android中如何获得模块呢? - c0dehunter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接