美文网首页js
加减乘除,避免参数类型、小数点个数不同等出现的误差

加减乘除,避免参数类型、小数点个数不同等出现的误差

作者: 悠哉悠哉过日子 | 来源:发表于2017-11-15 16:09 被阅读6次

    //加法

    function add(a, b) {

        var c, d, e;

        try{

            c = a.toString().split(".")[1].length;

        }catch(f) {

            c = 0;

        }

        try{

            d = b.toString().split(".")[1].length;

        }catch(f) {

            d = 0;

        }

        return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;

    }

    //减法前边减后边

    function sub(a, b) {

        var c, d, e;

        try{

            c = a.toString().split(".")[1].length;

        }catch(f) {

            c = 0;

        }

        try{

            d = b.toString().split(".")[1].length;

        }catch(f) {

            d = 0;

        }

        return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;

    }

    //除法

    function div(a, b) {

        var c, d, e = 0,

        f = 0;

        try{

            e = a.toString().split(".")[1].length;

        }catch(g) {}

        try{

            f = b.toString().split(".")[1].length;

        }catch(g) {}

        return c = Number(a.toString().replace(".","")), d = Number(b.toString().replace(".","")), mul(c / d,     Math.pow(10, f - e));

    }

    //乘法

    function mul(a, b) {

        var c = 0,

        d = a.toString(),

        e = b.toString();

        try{

            c += d.split(".")[1].length;

        }catch(f) {}

        try{

            c += e.split(".")[1].length;

        }catch(f) {}

        return Number(d.replace(".","")) * Number(e.replace(".","")) / Math.pow(10, c);

    }

    相关文章

      网友评论

        本文标题:加减乘除,避免参数类型、小数点个数不同等出现的误差

        本文链接:https://www.haomeiwen.com/subject/afchvxtx.html