UNPKG

number-utils-km

Version:

Утилиты для работы с числами: округление, константы

76 lines (68 loc) 2.05 kB
'use strict'; /** * Модуль для работы с числами * @module number-utils */ module.exports = { /** * Округляет число до указанного количества знаков * @param {number} num - Исходное число * @param {number} [decimals=2] - Количество знаков после запятой * @returns {number} */ roundToFixed(num, decimals = 2) { if (typeof num !== 'number' || isNaN(num)) { throw new TypeError('First argument must be a number'); } const factor = Math.pow(10, decimals); return Math.round(num * factor) / factor; }, /** * Округляет число вверх * @param {number} num * @returns {number} */ ceil(num) { return Math.ceil(num); }, /** * Округляет число вниз * @param {number} num * @returns {number} */ floor(num) { return Math.floor(num); }, // Константы модуля constants: { /** Значение числа π */ PI: 3.141592653589793, /** Значение числа e */ E: 2.718281828459045, /** Режимы округления */ ROUND_MODES: { UP: 'UP', DOWN: 'DOWN', NEAREST: 'NEAREST' } }, /** * Универсальное округление * @param {number} num - Число * @param {string} [mode='NEAREST'] - Режим (из constants.ROUND_MODES) * @param {number} [decimals=0] - Знаки после запятой * @returns {number} */ round(num, mode = this.constants.ROUND_MODES.NEAREST, decimals = 0) { const factor = Math.pow(10, decimals); const temp = num * factor; switch(mode) { case this.constants.ROUND_MODES.UP: return Math.ceil(temp) / factor; case this.constants.ROUND_MODES.DOWN: return Math.floor(temp) / factor; default: return Math.round(temp) / factor; } } };