zoukankan      html  css  js  c++  java
  • javascript解决小数的加减乘除精度丢失的方案

    原文:http://www.jb51.net/article/85463.htm

    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 accMul((r1/r2),pow(10,t2-t1)); 
     } 
     } 
     //乘法 
     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) 
     } 
    //加法 
    function accAdd(arg1,arg2){ 
    var r1,r2,m; 
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 
    m=Math.pow(10,Math.max(r1,r2)) 
    return (arg1*m+arg2*m)/m 
    } 
    //减法 
    function Subtr(arg1,arg2){ 
     var r1,r2,m,n; 
     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} 
     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} 
     m=Math.pow(10,Math.max(r1,r2)); 
     n=(r1>=r2)?r1:r2; 
     return ((arg1*m-arg2*m)/m).toFixed(n); 
    }
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    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 accMul((r1/r2),pow(10,t2-t1));
     }
     }
     //乘法
     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)
     }
    //加法
    function accAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
    m=Math.pow(10,Math.max(r1,r2))
    return (arg1*m+arg2*m)/m
    }
    //减法
    function Subtr(arg1,arg2){
     var r1,r2,m,n;
     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
     m=Math.pow(10,Math.max(r1,r2));
     n=(r1>=r2)?r1:r2;
     return ((arg1*m-arg2*m)/m).toFixed(n);
    }
  • 相关阅读:
    递归练习题1
    爬虫模块之Beautiful Soup4
    python中的简易表格prettytable
    ubuntu中安装和使用quant-lib
    一个金融软件的基础功能分布
    ONLY_FULL_GROUP_BY 牛皮癣怎么治
    pandas
    pandas行筛选/列筛选(条件筛选/范围筛选)/计算
    conda 的 proxy设置
    openpyxl 安装失败的处理 (缺少 et_xmlfile )
  • 原文地址:https://www.cnblogs.com/jwlfpzj/p/7717884.html
Copyright © 2011-2022 走看看