@technobuddha/library
Version:
A large library of useful functions
28 lines • 2.32 kB
JavaScript
import { constructNumber } from "./construct-number.js";
import { deconstructNumber } from "./deconstruct-number.js";
/**
* Returns the smallest integer greater than or equal to the given number, with optional tolerance and precision adjustments.
* @param input - The number to apply the ceiling operation to.
* @param options - Optional configuration object.
* @returns The smallest integer greater than or equal to the adjusted input.
* @example
* ```typescript
* ceil(2.3); // 3
* ceil(-2.3); // -2
* ceil(2.0001, { tolerance: 0.001 }); // 2
* ceil(2.345, { precision: 2 }); // 2.35
* ```
* @group Math
* @category Operations
*/
export function ceil(input, { tolerance = 0, precision = 0 } = {}) {
if (Number.isNaN(input) || !Number.isFinite(input)) {
return input;
}
let { sign, mantissa, exponent } = deconstructNumber(input - Math.sign(input) * tolerance - Number.EPSILON);
exponent += precision;
({ sign, mantissa, exponent } = deconstructNumber(Math.ceil(constructNumber({ sign, mantissa, exponent }))));
exponent -= precision;
return constructNumber({ sign, mantissa, exponent });
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jZWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWM1RDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxJQUFJLENBQUMsS0FBYSxFQUFFLEVBQUUsU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsQ0FBQyxLQUFrQixFQUFFO0lBQ3BGLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBaUIsQ0FDbEQsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3RELENBQUM7SUFDRixRQUFRLElBQUksU0FBUyxDQUFDO0lBQ3RCLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLGlCQUFpQixDQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUN6RCxDQUFDLENBQUM7SUFDSCxRQUFRLElBQUksU0FBUyxDQUFDO0lBRXRCLE9BQU8sZUFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZELENBQUMifQ==