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

//加法

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);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 2,009评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,806评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,790评论 0 33
  • 华者,花也。婀娜之姿,惊艳于世,唯苦信期短瞬,每感其凋,涩涩然而欲泣。倘借掌中利器摹之永存,岂非幸事?然寰宇全息,...
    PETJUMPJUMP阅读 251评论 0 0
  • 一,破局 亲爱的战友们,大家晚上好! 今天我的主题是[破局]! 早上我在整理文稿至语音稿的时候,突然意识到,对于一...
    平行夏阅读 506评论 0 1