Added MathUtil.floorDiv, and tests.
This commit is contained in:
@@ -17,4 +17,20 @@ public class MathUtil
|
||||
if (value > high) return high;
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the floored division {@code dividend/divisor} which is useful when dividing
|
||||
* potentially negative numbers into bins.
|
||||
*
|
||||
* <p> For example, the following numbers {@code floorDiv} 10 are:
|
||||
* <pre>
|
||||
* -15 -10 -8 -2 0 2 8 10 15
|
||||
* -2 -1 -1 -1 0 0 0 1 1
|
||||
* </pre>
|
||||
*/
|
||||
public static int floorDiv (int dividend, int divisor) {
|
||||
boolean numpos = dividend >= 0, denpos = divisor >= 0;
|
||||
if (numpos == denpos) return dividend / divisor;
|
||||
return denpos ? (dividend - divisor + 1) / divisor : (dividend - divisor - 1) / divisor;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user