UNPKG

@technobuddha/library

Version:
28 lines 2.32 kB
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==