devxlogo

Java’s Division and Modulus Operations

Java’s Division and Modulus Operations

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.

devx-admin

Share the Post: