Blame view

node_modules/es5-ext/math/_decimal-adjust.js 808 Bytes
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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));
  	};
  };