1. 程式人生 > >js 加減乘除以及四舍五入 新寫法

js 加減乘除以及四舍五入 新寫法

res his nbsp ring rac ast ply try spl

1 四舍五入

eg: (1.23).round() = 1.2

(1.2456).round(3) = 1.246

if (!Number.prototype.round) {
    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; } } } } 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));
        }
    }
}

if (!Number.prototype.round) { 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; } } } }
val = parseFloat(arr1 + ‘.‘ + newArr2); res = parseFloat(val.toFixed(num)); return res; }}

js 加減乘除以及四舍五入 新寫法