/**
 * 处理js number.toFixed方法的bug
 * @param {*} num
 * @param {*} d
 * @access private
 */
var toFixed = function toFixed(num, d) {
  var s = "" + num;
  if (!d) d = 0;
  if (s.indexOf('.') == -1) s += '.';
  s += new Array(d + 1).join('0');
  var regex = new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (d + 1) + "})?)\\d*$");

  if (regex.test(s)) {
    var _s = "0" + RegExp.$2;

    var pm = RegExp.$1;
    var a = RegExp.$3.length;
    var b = true;

    if (a == d + 2) {
      a = _s.match(/\d/g);

      if (parseInt(a[a.length - 1]) > 4) {
        for (var i = a.length - 2; i >= 0; i--) {
          a[i] = parseInt(a[i]) + 1;

          if (a[i] == 10) {
            a[i] = 0;
            b = i != 1;
          } else break;
        }
      }

      _s = a.join('').replace(new RegExp("(\\d+)(\\d{" + d + "})\\d$"), '$1.$2');
    }

    if (b) _s = _s.substr(1);
    regex.lastIndex = 0;
    return (pm + _s).replace(/\.$/, '');
  }

  return "" + num;
};
/**
 *
 * 数字格式化，保留N位小数
 * @param x 数值
 * @param n 保留位数
 * @function toDecimal
 * @returns {number}
 */


export var toDecimal = function toDecimal(x) {
  var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
  var f = parseFloat(x);

  if (isNaN(f)) {
    return x;
  }

  f = parseFloat(toFixed(x, parseInt(n)));
  return f;
};