javascript 浮点运算

<script type="text/javascript">

    // 两个浮点数求和
    function accAdd(num1,num2){
       var r1,r2,m;
       try{
           r1 = num1.toString().split('.')[1].length;
       }catch(e){
           r1 = 0;
       }
       try{
           r2=num2.toString().split(".")[1].length;
       }catch(e){
           r2=0;
       }
       m=Math.pow(10,Math.max(r1,r2));
       // return (num1*m+num2*m)/m;
       return Math.round(num1*m+num2*m)/m;
    }
    
    // 两个浮点数相减
    function accSub(num1,num2){
       var r1,r2,m;
       try{
           r1 = num1.toString().split('.')[1].length;
       }catch(e){
           r1 = 0;
       }
       try{
           r2=num2.toString().split(".")[1].length;
       }catch(e){
           r2=0;
       }
       m=Math.pow(10,Math.max(r1,r2));
       n=(r1>=r2)?r1:r2;
       return (Math.round(num1*m-num2*m)/m).toFixed(n);
    }
    // 两数相除
    function accDiv(num1,num2){
       var t1,t2,r1,r2;
       try{
           t1 = num1.toString().split('.')[1].length;
       }catch(e){
           t1 = 0;
       }
       try{
           t2=num2.toString().split(".")[1].length;
       }catch(e){
           t2=0;
       }
       r1=Number(num1.toString().replace(".",""));
       r2=Number(num2.toString().replace(".",""));
       return (r1/r2)*Math.pow(10,t2-t1);
    }
    
    function accMul(num1,num2){
       var m=0,s1=num1.toString(),s2=num2.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);
    }
    
  </script>
  
    <script>
    document.write("使用js原生态方法");
    document.write("<br/> 1.01 + 1.02 ="+(1.01 + 1.02));
    document.write("<br/> 1.01 - 1.02 ="+(1.01 - 1.02));
    document.write("<br/> 0.000001 / 0.0001 ="+(0.000001 / 0.0001));
    document.write("<br/> 0.012345 * 0.000001 ="+(0.012345 * 0.000001));
    document.write("<br/><hr/>");
    document.write("<br/>使用自定义方法");
    document.write("<br/> 1.01 + 1.02 ="+accAdd(1.01,1.02));
    document.write("<br/> 1.01 - 1.02 ="+accSub(1.01,1.02));
    document.write("<br/> 0.000001 / 0.0001 ="+accDiv(0.000001,0.0001));
    document.write("<br/> 0.012345 * 0.000001 ="+accMul(0.012345,0.000001));
    </script>

  

posted on 2016-04-19 08:43  荣锋亮  阅读(356)  评论(0编辑  收藏  举报

导航