Home » Android » java – Android: which operator for modulo (% doesn't work with negative numbers)

# java – Android: which operator for modulo (% doesn't work with negative numbers)

Questions:

If I try

``````int a=(-2)%6
``````

I get -2 instead of 4.

Why does it behave this way with negative numbers?

`%` does a remainder operation in Java.

To get a proper modulus, you can use the remainder in a function:

It’s shortest using ternary operator to do the sign fixup:

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

For those who don’t like the ternary operator, this is equivalent:

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

Because if you divides -2 by 6, you will get -2 as remainder. % operator will give the remainder just like below;

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

To get the modulo:

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