| name | mongez-reinforcements-numbers |
| description | Number utilities from @mongez/reinforcements — rounding, clamping, range helpers, safe arithmetic (safeDivide, percentage, parseNumber), and formatting (formatBytes, formatNumber).
|
Numbers
Rounding, clamping, formatting, safe arithmetic. Import from @mongez/reinforcements.
Rounding with precision
round(value: number, precision?: number): number
floor(value: number, precision?: number): number
ceil(value: number, precision?: number): number
toFixed(value: number, precision?: number): number
round(1.235, 2);
round(1.5, 0);
floor(1.99, 1);
ceil(1.01, 1);
toFixed(1.236, 2);
Range helpers
clamp(value: number, min: number, max: number): number
inRange(value: number, min: number, max: number, options?: { inclusive?: boolean }): boolean
lerp(a: number, b: number, t: number): number
clamp normalizes swapped bounds. inRange defaults to inclusive: true.
clamp(15, 0, 10);
clamp(-3, 0, 10);
inRange(5, 0, 10);
inRange(10, 0, 10, { inclusive: false });
lerp(0, 100, 0.25);
Safe arithmetic
safeDivide
safeDivide<F = number>(a: number, b: number, fallback?: F): number | F
Returns fallback (default 0) when b === 0 or the result isn't finite.
safeDivide(10, 2);
safeDivide(10, 0);
safeDivide(10, 0, null);
percentage
percentage(value: number, total: number, decimals?: number): number
percentage(25, 200);
percentage(7, 9, 1);
percentage(1, 0);
parseNumber
parseNumber<F = number>(value: unknown, fallback?: F): number | F
Returns fallback (default 0) for null / undefined / "" / non-numeric input.
parseNumber("42");
parseNumber("abc", -1);
parseNumber(null, 0);
Formatting
formatBytes
formatBytes(bytes: number, options?: {
decimals?: number;
binary?: boolean;
}): string
formatBytes(1500);
formatBytes(1024, { binary: true, decimals: 0 });
formatBytes(-1500, { decimals: 0 });
formatBytes(0);
formatNumber
formatNumber(value: number, options?: Intl.NumberFormatOptions & {
locale?: string | string[];
}): string
Thin wrapper around Intl.NumberFormat.
formatNumber(1234.5);
formatNumber(0.42, { style: "percent" });
formatNumber(99, { style: "currency", currency: "USD" });
formatNumber(1234, { locale: "ar-EG" });
formatDuration
formatDuration(ms: number, options?: {
units?: number;
long?: boolean;
separator?: string;
}): string
Human-readable duration from milliseconds (days → ms). Shows every non-zero unit by default; cap with units.
formatDuration(3661000);
formatDuration(3661000, { units: 2 });
formatDuration(90000, { long: true });
ordinal
ordinal(value: number, options?: { withNumber?: boolean }): string
English ordinal for an integer; handles the 11–13 exception and negatives. The fraction is truncated.
ordinal(1);
ordinal(22);
ordinal(113);
ordinal(2, { withNumber: false });