您现在的位置是:首页 > 文章详情

JS ES6 加减乘除法小数浮点数计算BUG解决

日期:2018-09-04点击:975

2018年3月6日

JS ES6 加减乘除法小数浮点数计算BUG解决

//检测是否为数字

let num = (a) => {

    if(a != null && a.toString() != "") {

        let r = /^-?(0|[1-9]+\d*|[1-9]+\d*\.\d+|0\.\d+)$/;

        if(r.test(a.toString())) {

            return true;

        }

    }

    return false;

}

 

//加法

let plus = (a, b) => {

    if(!num(a) || !num(b)) {

        return null;

    }

    let c, d, m;

    try {

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

    } catch(e) {

        c = 0;

    }

    try {

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

    } catch(e) {

        d = 0;

    }

    m = Math.pow(10, Math.max(c, d));

    return(a * m + b * m) / m;

}

 

//减法

let minus = (a, b) => {

    if(!num(a) || !num(b)) {

        return null;

    }

    let c, d, m, n;

    try {

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

    } catch(e) {

        c = 0;

    }

    try {

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

    } catch(e) {

        d = 0;

    }

    m = Math.pow(10, Math.max(c, d));

    return(a * m - b * m) / m;

// n = (c >= d) ? c : d;

// return((a * m - b * m) / m).toFixed(n);//数字转换字符串,保留n位小数

}

 

//乘法

let multiply = (a, b) => {

    let m = 0,

    c = a.toString(),

    d = b.toString();

    try {

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

    } catch(e) {}

    try {

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

    } catch(e) {}

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

}

 

//除法

let division = (a, b) => {

    if(!num(a) || !num(b)) {

        return null;

    }

    let c, d, f, g;

    try {

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

    } catch(e) {

        c = 0;

    }

    try {

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

    } catch(e) {

        d = 0;

    }

    with(Math) {

        f = Number(a.toString().replace(".", ""));

        g = Number(b.toString().replace(".", ""));

        return(f / g) * pow(10, d - c);

    }

}
原文链接:https://yq.aliyun.com/articles/635289
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章