UNPKG

@terminus/ngx-tools

Version:

[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github

28 lines 3.57 kB
import { isNumber } from '@terminus/ngx-tools/type-guards'; /** * Round a number * * Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round#A_better_solution * * @param num - The number to round (also accepting strings for exponential support) * @param precision - How precise to make the rounding * @returns The rounded number * * @example * roundNumber(1.050, 1) // Returns: `1.1` * roundNumber(3456.3456, 1) // Returns: `3456.3` * roundNumber(3456.3456, -2) // Returns: `3500` * roundNumber('1.23e+5', -4) // Returns: `120000` */ export function roundNumber(num, precision) { if (precision === void 0) { precision = 0; } if (!isNumber(num)) { return undefined; } var shift = function (innerNum, innerPrecision) { var numArray = innerNum.toString().split('e'); return +(numArray[0] + "e" + (numArray[1] ? (+numArray[1] + innerPrecision) : innerPrecision)); }; return shift(Math.round(shift(num, +precision)), -precision); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91bmQtbnVtYmVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRlcm1pbnVzL25neC10b29scy91dGlsaXRpZXMvIiwic291cmNlcyI6WyJyb3VuZC1udW1iZXIvcm91bmQtbnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUczRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBb0IsRUFBRSxTQUFhO0lBQWIsMEJBQUEsRUFBQSxhQUFhO0lBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEIsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxJQUFNLEtBQUssR0FBRyxVQUFTLFFBQXlCLEVBQUUsY0FBc0I7UUFDdEUsSUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsQ0FBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUUsQ0FBQyxDQUFDO0lBQy9GLENBQUMsQ0FBQztJQUVGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdAdGVybWludXMvbmd4LXRvb2xzL3R5cGUtZ3VhcmRzJztcblxuXG4vKipcbiAqIFJvdW5kIGEgbnVtYmVyXG4gKlxuICogUmVmZXJlbmNlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9NYXRoL3JvdW5kI0FfYmV0dGVyX3NvbHV0aW9uXG4gKlxuICogQHBhcmFtIG51bSAtIFRoZSBudW1iZXIgdG8gcm91bmQgKGFsc28gYWNjZXB0aW5nIHN0cmluZ3MgZm9yIGV4cG9uZW50aWFsIHN1cHBvcnQpXG4gKiBAcGFyYW0gcHJlY2lzaW9uIC0gSG93IHByZWNpc2UgdG8gbWFrZSB0aGUgcm91bmRpbmdcbiAqIEByZXR1cm5zIFRoZSByb3VuZGVkIG51bWJlclxuICpcbiAqIEBleGFtcGxlXG4gKiByb3VuZE51bWJlcigxLjA1MCwgMSkgICAgICAvLyBSZXR1cm5zOiBgMS4xYFxuICogcm91bmROdW1iZXIoMzQ1Ni4zNDU2LCAxKSAgLy8gUmV0dXJuczogYDM0NTYuM2BcbiAqIHJvdW5kTnVtYmVyKDM0NTYuMzQ1NiwgLTIpIC8vIFJldHVybnM6IGAzNTAwYFxuICogcm91bmROdW1iZXIoJzEuMjNlKzUnLCAtNCkgLy8gUmV0dXJuczogYDEyMDAwMGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kTnVtYmVyKG51bTogbnVtYmVyIHwgc3RyaW5nLCBwcmVjaXNpb24gPSAwKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpc051bWJlcihudW0pKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24oaW5uZXJOdW06IG51bWJlciB8IHN0cmluZywgaW5uZXJQcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbnVtQXJyYXkgPSBpbm5lck51bS50b1N0cmluZygpLnNwbGl0KCdlJyk7XG4gICAgcmV0dXJuICsoYCR7bnVtQXJyYXlbMF19ZSR7bnVtQXJyYXlbMV0gPyAoK251bUFycmF5WzFdICsgaW5uZXJQcmVjaXNpb24pIDogaW5uZXJQcmVjaXNpb259YCk7XG4gIH07XG5cbiAgcmV0dXJuIHNoaWZ0KE1hdGgucm91bmQoc2hpZnQobnVtLCArcHJlY2lzaW9uKSksIC1wcmVjaXNpb24pO1xufVxuIl19