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

JS的精确简单的加减乘除

时间:2019-09-11 17:35:04      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:index   数值   case   lse   replace   tostring   UNC   简单的   function   

简单的写法:

<script>
function decNum(a){/*获取小数位数*/
    var r=0;
    a=a.toString();
    if(a.indexOf(".")!== -1) r=a.split(".")[1].length;
    return r;
}
function int(a){/*去除小数点并转成数值*/
    return parseInt(a.toString().replace(".",""));
}
function calc(a,b,type){//加减乘除
    var r,
        da=decNum(a),
        db=decNum(b),
        dsum=da+db,
        dmin=Math.min(da,db),
        dmax=Math.max(da,db);
    dsum+=dmax-dmin;
    dsum=Math.pow(10,dsum);
    dmax=Math.pow(10,dmax);
    a=int(a);
    b=int(b);
    if(da>db){
        b*=Math.pow(10,da-db);
    }else{
        a*=Math.pow(10,db-da);
    }
    switch(type){
        case "add":
            r=(a+b)/dmax;
            break;
        case "subtract":
            r=(a-b)/dmax;
            break;
        case "multiply":
            r=(a*b)/dsum;
            break;
        case "divide":
            r=a/b;
            break;
    }
    return r;
}
s=calc(0.1,0.2,"add");
console.log(s);
s=calc(-0.1,0.2,"add");
console.log(s);
s=calc(0.2,0.1,"subtract");
console.log(s);
s=calc(0.002,0.01,"multiply");
console.log(s);
s=calc(2.2,100,"divide");
console.log(s);
</script>

JS的精确简单的加减乘除

标签:index   数值   case   lse   replace   tostring   UNC   简单的   function   

原文地址:https://www.cnblogs.com/zhyphp/p/11507478.html

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