mirror of
https://github.com/TheAlgorithms/Java.git
synced 2026-03-13 08:40:43 +08:00
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:
committed by
GitHub
parent
ef93cc1503
commit
933e929b54
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user