zoukankan      html  css  js  c++  java
  • js浮点数相加、减、乘、除精确计算

    js 浮点数计算时 ,无缘无辜 后边冒出一堆 小数点………… 貌似js本身的问题,类型不定??????

    只能自己写函数处理。。  http://blog.csdn.net/w4bobo/article/details/9143663 借鉴一下 

    1 //调用:accAdd(arg1,arg2)  
    2 //返回值:arg1加上arg2的精确结果  
    3 function accAdd(arg1,arg2){  
    4     var r1,r2,m;  
    5     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}  
    6     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}  
    7     m=Math.pow(10,Math.max(r1,r2))  
    8     return (arg1*m+arg2*m)/m  
    9 }
    //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。  
    //调用:accSub(arg1,arg2)  
    //返回值:arg1减上arg2的精确结果  
    function accSub(arg1,arg2){      
        return accAdd(arg1,-arg2);  
    }
    //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。  
    //调用:accMul(arg1,arg2)  
    //返回值:arg1乘以arg2的精确结果  
    function accMul(arg1,arg2)  
    {  
        var m=0,s1=arg1.toString(),s2=arg2.toString();  
        try{m+=s1.split(".")[1].length}catch(e){}  
        try{m+=s2.split(".")[1].length}catch(e){}  
        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)  
    }
    //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。  
    //调用:accDiv(arg1,arg2)  
    //返回值:arg1除以arg2的精确结果  
    function accDiv(arg1,arg2){  
        var t1=0,t2=0,r1,r2;  
        try{t1=arg1.toString().split(".")[1].length}catch(e){}  
        try{t2=arg2.toString().split(".")[1].length}catch(e){}  
        with(Math){  
            r1=Number(arg1.toString().replace(".",""))  
            r2=Number(arg2.toString().replace(".",""))  
            return (r1/r2)*pow(10,t2-t1);  
        }  
    }
  • 相关阅读:
    springboot项目打war包流程
    ant配置文件详解(转)
    如何提升java服务器并发性能
    find用法
    基姆拉尔森计算公式 推导计算星期几
    递归第二弹:分类强化
    拨钟问题
    POJ1222熄灯问题【位运算+枚举】
    POJ1013称硬币【枚举】
    4148生理周期
  • 原文地址:https://www.cnblogs.com/lengp/p/4166812.html
Copyright © 2011-2022 走看看