optaplanner-core/src/main/java/org/optaplanner/core/config/util/ConfigUtils.java
public static int ceilDivide(int dividend, int divisor) {
        if (divisor == 0) {
            throw new ArithmeticException("Cannot divide by zero: " + dividend + "/" + divisor);
        }
        int correction;
        if (dividend % divisor == 0) {
            correction = 0;
        } else if (Integer.signum(dividend) * Integer.signum(divisor) < 0) {
            correction = 0;
        } else {
            correction = 1;
        }
        return (dividend / divisor) + correction;
    }
public static int ceilDivide(int dividend, int divisor) {
        if (divisor == 0) {
            throw new ArithmeticException("Cannot divide by zero: " + dividend + "/" + divisor);
        }
        int correction;
        if (dividend % divisor == 0) {
            correction = 0;
        } else if (Integer.signum(dividend) * Integer.signum(divisor) < 0) {
            correction = 0;
        } else {
            correction = 1;
        }
        return (dividend / divisor) + correction;
    }
public static int ceilDivide ( int dividend , int divisor ) { if ( divisor == 0 ) { throw new ArithmeticException ( "Cannot divide by zero: " + dividend + "/" + divisor ) ; } int correction ; if ( dividend % divisor == 0 ) { correction = 0 ; } else if ( Integer . signum ( dividend ) * Integer . signum ( divisor ) < 0 ) { correction = 0 ; } else { correction = 1 ; } return ( dividend / divisor ) + correction ; }
Divides and ceils the result without using floating point arithmetic. For floor division,
see {@link Math#floorDiv(long, long)}.

@throws ArithmeticException if {@code divisor == 0}
@param dividend the dividend
@param divisor the divisor
@return dividend / divisor, ceiled
Divides and ceils the result without using floating point arithmetic . For floor division see { @link Math#floorDiv ( long long ) } .