zoukankan      html  css  js  c++  java
  • JS浮点数运算

    //乘法函数,用来得到精确的乘法结果 
    //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
    //调用:accMul(arg1,arg2) 
    //返回值:arg1乘以arg2的精确结果 
    function accMul(arg1,arg2) 
    { 
        var m=0,s1=arg1.toString(),s2=arg2.toString(); 
        try{
            if(s1.split(".")[1] != undefined )
                m+=s1.split(".")[1].length
        }catch(e){} 
        try{
            if(s2.split(".")[1] != undefined )
                m+=s2.split(".")[1].length
        }catch(e){} 
        return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 
    } 
      
    //浮点数除法运算  
     function accDiv(arg1,arg2){   
        var r1=0,r2=0,m,s1=arg1.toString(),s2=arg2.toString();  
        try{
            if(s1.split(".")[1] != undefined )
                r1=s1.split(".")[1].length;
        }catch(e){} 
        try{
            if(s2.split(".")[1] != undefined )
                r2=s2.split(".")[1].length;
        }catch(e){} 
        m=Math.pow(10,Math.max(r1,r2));   
        return (accMul(arg1,m))/(accMul(arg2,m));   
    }   
    
    function accAdd(arg1,arg2){ 
        var r1=0,r2=0,m,s1=arg1.toString(),s2=arg2.toString();  
        try{
            if(s1.split(".")[1] != undefined )
                r1=s1.split(".")[1].length;
        }catch(e){} 
        try{
            if(s2.split(".")[1] != undefined )
                r2=s2.split(".")[1].length;
        }catch(e){} 
        m=Math.pow(10,Math.max(r1,r2)); 
        return (accMul(arg1,m)+accMul(arg2,m))/m; 
    } 
    
    function Subtr(arg1,arg2){
         var r1=0,r2=0,m,n,s1=arg1.toString(),s2=arg2.toString();
         try{
             if(s1.split(".")[1] != undefined )
                 r1=s1.split(".")[1].length;
         }catch(e){}
         try{
             if(s2.split(".")[1] != undefined )
                 r2=s2.split(".")[1].length;
         }catch(e){}
         m=Math.pow(10,Math.max(r1,r2));
         //last modify by deeka
         //动态控制精度长度
         n=(r1>=r2)?r1:r2;
         return (accMul(arg1,m)-accMul(arg2,m))/m;
    }
  • 相关阅读:
    Linux服务器上监控网络带宽的18个常用命令
    基于anaconda安装cudarray和deeppy模块
    How to Install CUDA on NVIDIA Jetson TX1
    Ubuntu-tegra 修复sudoers误操作产生的没有sudo权限
    caffe安装指南—吐血整理
    二进制和格雷码转换
    liunux下升级python
    Word Break
    Longest Valid Parentheses
    Multiply Strings
  • 原文地址:https://www.cnblogs.com/mingforyou/p/3341519.html
Copyright © 2011-2022 走看看