refactor: refactor Ceil and improved tests (#6366)

* refactor: refactor Ceil and improved tests

* checkstyle: remove redundant import

* refactor: fix edge cases

* refactor: fix checkstyle

* refactor: fix checkstyle import order
This commit is contained in:
Oleksandr Klymenko
2025-07-14 08:47:22 +03:00
committed by GitHub
parent ef93cc1503
commit 933e929b54
2 changed files with 41 additions and 16 deletions

View File

@@ -1,23 +1,34 @@
package com.thealgorithms.maths;
/**
* Utility class to compute the ceiling of a given number.
*/
public final class Ceil {
private Ceil() {
}
/**
* Returns the smallest (closest to negative infinity)
* Returns the smallest double value that is greater than or equal to the input.
* Equivalent to mathematical ⌈x⌉ (ceiling function).
*
* @param number the number
* @return the smallest (closest to negative infinity) of given
* {@code number}
* @param number the number to ceil
* @return the smallest double greater than or equal to {@code number}
*/
public static double ceil(double number) {
if (number - (int) number == 0) {
if (Double.isNaN(number) || Double.isInfinite(number) || number == 0.0 || number < Integer.MIN_VALUE || number > Integer.MAX_VALUE) {
return number;
} else if (number - (int) number > 0) {
return (int) (number + 1);
}
if (number < 0.0 && number > -1.0) {
return -0.0;
}
long intPart = (long) number;
if (number > 0 && number != intPart) {
return intPart + 1.0;
} else {
return (int) number;
return intPart;
}
}
}