number-utils-km
Version:
Утилиты для работы с числами: округление, константы
76 lines (68 loc) • 2.05 kB
JavaScript
;
/**
* Модуль для работы с числами
* @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;
}
}
};