UNPKG

@lvlte/modf

Version:

Get the integral and fractional parts of a given number.

35 lines (34 loc) 766 B
export function modf(x, literal = false) { if (!Number.isFinite(x)) { return [NaN, NaN]; } const sign = Math.sign(x); const ipart = Math.trunc(x); let fpart; if (ipart === x) { fpart = sign * 0; } else if (ipart === 0) { fpart = x; } else if (literal) { const decimals = x.toString().split('.')[1]; fpart = sign * Number(`0.${decimals}`); } else { fpart = x - ipart; } return [ipart, fpart]; } export const ipart = (x) => { if (Number.isFinite(x)) { return Math.trunc(x); } return NaN; }; export const fpart = (x, literal = false) => { if (literal) { return modf(x, true)[1]; } return Number.isFinite(x) ? x % 1 : NaN; };