You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
808 B
29 lines
808 B
// Credit: |
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round |
|
// #Decimal_rounding |
|
|
|
"use strict"; |
|
|
|
var isValue = require("../object/is-value") |
|
, ensureInteger = require("../object/ensure-integer"); |
|
|
|
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)); |
|
}; |
|
};
|
|
|