In Java you take the remainder with the modulus (%) operator, whereby the sign of the remainder follows the dividend, not the divisor. So (+5 % -2) will be, to the surprise of many, +1. Java division has the Euclidean property. When you multiply the quotient by the divisor and add the remainder, you get back to the dividend. Java’s division is a truncated division. The following tabulates the matter:
Signs Division Modulus + + +5/+2=+2 +5%+2=+1 - + -5/+2=-2 -5%+2=-1 + - +5/-2=-2 +5%-2=+1 - - -5/-2=+2 -5%-2=-1
In general, if floored division is what you want (yielding the closest, smallest number to that number), you can write:
(dividend >= 0) ? (dividend / divisor) : ((dividend-divisor+1) / divisor);
If you want ceiled division (yielding the closest, largest number to that number), you can write:
(dividend >= 0) ? ((dividend+divisor-1) / divisor) : (dividend / divisor);
Note that you can also use:
public static native double floor(double a)
and
public static native double ceil(double a)
of the java.lang.Math class.