码迷,mamicode.com
首页 > Web开发 > 详细

js控制精度的加减乘除

时间:2016-01-04 10:05:43      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

//加法函数
        function accAdd(arg1, arg2) {
            var r1, r2, m;
            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));
            return (arg1 * m + arg2 * m) / m;
        }

        //给Number类型增加一个add方法,,使用时直接用 .add 即可完成计算。
        Number.prototype.add = function (arg) {
            return accAdd(arg, this);
        };

        //减法函数
        function Subtr(arg1, arg2) {
            var r1, r2, m, n;
            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));
            //last modify by deeka
            //动态控制精度长度
            n = (r1 >= r2) ? r1 : r2;
            return ((arg1 * m - arg2 * m) / m).toFixed(n);
        }

        //给Number类型增加一个add方法,,使用时直接用 .sub 即可完成计算。
        Number.prototype.sub = function (arg) {
            return Subtr(this, arg);
        };

        //乘法函数
        function accMul(arg1, arg2) {
            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);
        }

        //给Number类型增加一个mul方法,使用时直接用 .mul 即可完成计算。
        Number.prototype.mul = function (arg) {
            return accMul(arg, this);
        };

        //除法函数
        function accDiv(arg1, arg2) {
            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) {
            }
            with (Math) {
                r1 = Number(arg1.toString().replace(".", ""));
                r2 = Number(arg2.toString().replace(".", ""));
                return (r1 / r2) * pow(10, t2 - t1);
            }
        }

        //给Number类型增加一个div方法,,使用时直接用 .div 即可完成计算。
        Number.prototype.div = function (arg) {
            return accDiv(this, arg);
        };

        function setNumAndWeight(num, weight, index, obj) {
            $(obj).parent().next("td").text(getFloatByNum(weight, 4));
            var html = "件数:" + num + "<br>" + "重量:" + getFloatByNum(weight, 4);
            $("tr.tr-" + index).children().eq(4).html(html);
        }

        //强制制保留4位小数,第5位直接舍去。如:2,会在2后面补上00.即2.00
        function toDecimal4(x) {
            var f = parseFloat(x);
            if (isNaN(f)) {
                return false;
            }
            var f = Math.floor(x * 10000) / 10000;
            var s = f.toString();
            var rs = s.indexOf(‘.‘);
            if (rs < 0) {
                rs = s.length;
                s += ‘.‘;
            }
            while (s.length <= rs + 4) {
                s += ‘0‘;
            }
            return s;
        }

调用,直接用:

 weight = parseFloat(perWeight).mul(parseInt(num).add(onboardNum)).sub(onboardWeight);

 

js控制精度的加减乘除

标签:

原文地址:http://www.cnblogs.com/gmq-sh/p/5097782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!