UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

43 lines 1.55 kB
export function roundHalfEven(num, decimalPlaces = 2) { const multiplier = Math.pow(10, decimalPlaces); const adjustedNum = num * multiplier; const floored = Math.floor(adjustedNum); const diff = adjustedNum - floored; if (diff > 0.5) { return Math.ceil(adjustedNum) / multiplier; } else if (diff < 0.5) { return Math.floor(adjustedNum) / multiplier; } return floored % 2 === 0 ? floored / multiplier : Math.ceil(adjustedNum) / multiplier; } export const formatDecimals = (value, decimals, rounding, opts = {}) => { decimals = parseFloat(String(decimals)); if (decimals >= 0) { opts.minimumFractionDigits = decimals; opts.maximumFractionDigits = decimals; } if (String(value).includes('.')) { const decimalPlaces = decimals || opts.maximumFractionDigits; if (rounding === 'omit' || rounding === true) { const factor = Math.pow(10, decimalPlaces); value = Math.trunc(Number(value) * factor) / factor; } else { switch (rounding) { case 'half-even': { value = roundHalfEven(Number(value), decimalPlaces); break; } } } } return value; }; export const countDecimals = (value, decimalSeparator = '.') => { var _String$split$; if (typeof value === 'number' && Math.floor(value.valueOf()) === value.valueOf()) { return 0; } return ((_String$split$ = String(value).split(decimalSeparator)[1]) === null || _String$split$ === void 0 ? void 0 : _String$split$.length) || 0; }; //# sourceMappingURL=decimals.js.map