js 加减乘除以及四舍五入 新写法

1 四舍五入

eg: (1.23).round() = 1.2

(1.2456).round(3) = 1.246

Number.prototype.round = function (count) {
    var res = 0;
    var val = this.toString();
    var num = parseInt(count || 2);
    var dataArr = val.split('.');
    var arr1 = dataArr[0] || "";
    var arr2 = dataArr[1] || "";
    var newArr2 = arr2;
    if (arr2.length > num) {
      var lastNum = arr2.substring(num, num + 1);
      if (parseInt(lastNum) >= 5) {
        newArr2 = parseInt(newArr2.substring(0, num)) + 1;
        newArr2 = newArr2.toString();
        if(newArr2.length<num){
          for(var i =0; i< (num - newArr2.length); i ++){
            newArr2 = "0" + newArr2;
          }
        }
        else if (newArr2.length > num) {
            arr1 = (parseInt(arr1) + 1).toString();
            newArr2 = newArr2.substring(1, 3);
        }
      }
    }

    val = parseFloat(arr1 + '.' + newArr2);
    res = parseFloat(val.toFixed(num));
    return res;
  }

2 加减乘除

eg: (1).plus(2) = 3

if (!Number.prototype.plus) { //'+'
    Number.prototype.plus = function (addend) {
        var arg1 = this,
            arg2 = addend;
        var r1,
            r2,
            m,
            num1,
            num2;
        try {
            r1 = arg1.toString().split(".")[1].length;
        } catch (e) {
            r1 = 0
        }
        try {
            r2 = arg2.toString().split(".")[1].length;
        } catch (e) {
            r2 = 0
        }
        m = Math.pow(10, Math.max(r1, r2));
        num1 = r1 == 0 ? parseInt(arg1 * m) : (parseInt(`${arg1.toString().replace('.', '')}`) * m / (Math.pow(10, r1)));
        num2 = r2 == 0 ? parseInt(arg2 * m) : (parseInt(`${arg2.toString().replace('.', '')}`) * m / (Math.pow(10, r2)));
        return (num1 + num2) / m;
    }
}

if (!Number.prototype.minus) { //'-'
    Number.prototype.minus = function (Subtraction) {
        var arg1 = this,
            arg2 = Subtraction;
        var r1,
            r2,
            m,
            n,
            num1,
            num2;
        try {
            r1 = arg1.toString().split(".")[1].length
        } catch (e) {
            r1 = 0
        }
        try {
            r2 = arg2.toString().split(".")[1].length
        } catch (e) {
            r2 = 0
        }
        m = Math.pow(10, Math.max(r1, r2));
        n = (r1 >= r2) ? r1 : r2;
        num1 = r1 == 0 ? parseInt(arg1 * m) : (parseInt(`${arg1.toString().replace('.', '')}`) * m / (Math.pow(10, r1)));
        num2 = r2 == 0 ? parseInt(arg2 * m) : (parseInt(`${arg2.toString().replace('.', '')}`) * m / (Math.pow(10, r2)));
        return parseFloat(((num1 - num2) / m).toFixed(n));
    }
}

if (!Number.prototype.multiply) { //'*'
    Number.prototype.multiply = function (multiple) {
        var arg1 = this,
            arg2 = multiple;
        var m = 0,
            s1 = arg1.toString(),
            s2 = arg2.toString();
        try {
            m += s1.split(".")[1].length
        } catch (e) { }
        try {
            m += s2.split(".")[1].length
        } catch (e) { }
        return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
    }

    if (!Number.prototype.devide) { //'/'
        Number.prototype.devide = function (divisor) {
            var arg1 = this,
                arg2 = divisor;
            var t1 = 0,
                t2 = 0,
                r1,
                r2;
            try {
                t1 = arg1.toString().split(".")[1].length
            } catch (e) { }
            try {
                t2 = arg2.toString().split(".")[1].length
            } catch (e) { }
            r1 = Number(arg1.toString().replace(".", ""))
            r2 = Number(arg2.toString().replace(".", ""))
            return (r1 / r2).multiply(Math.pow(10, t2 - t1));
        }
    }
}
原文地址:https://www.cnblogs.com/zxhome/p/10342313.html