aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/math/_decimal-adjust.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/math/_decimal-adjust.js')
-rw-r--r--node_modules/es5-ext/math/_decimal-adjust.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/node_modules/es5-ext/math/_decimal-adjust.js b/node_modules/es5-ext/math/_decimal-adjust.js
new file mode 100644
index 00000000..fd0b0025
--- /dev/null
+++ b/node_modules/es5-ext/math/_decimal-adjust.js
@@ -0,0 +1,29 @@
+// 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));
+ };
+};