frontend/.pnpm-store/v3/files/1c/3c46307dedd59f049edec2224c01cdc585a647be2718b0b7409f3ddda3eec4c8d3d153d0d4be53e5c33e65d72ef7439d610381d5cf66c2c544566c74429bfd

30 lines
799 B
Plaintext

// Credit:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
// #Decimal_rounding
"use strict";
var isValue = require("type/object/is")
, ensureInteger = require("type/integer/ensure");
var split = String.prototype.split;
module.exports = function (type) {
return function (value/*, exp*/) {
value = Number(value);
var exp = arguments[1];
if (isValue(exp)) exp = ensureInteger(exp);
if (!value) return value;
if (!exp) return Math[type](value);
if (!isFinite(value)) return value;
// Shift
var tokens = split.call(value, "e");
value = Math[type](tokens[0] + "e" + ((tokens[1] || 0) - exp));
// Shift back
tokens = value.toString().split("e");
return Number(tokens[0] + "e" + (Number(tokens[1] || 0) + exp));
};
};