js

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

2017-11-15  本文已影响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);

}

上一篇下一篇

猜你喜欢

热点阅读