JS-精确四则运算

来源:互联网 发布:尚德机构网络教育 编辑:程序博客网 时间:2024/05/14 20:06
加减法
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 }
原理:
  1. 取小数位多的一个(Math.max(r1,r2))
  2. 将加数都乘以10的m次方(变成整数)
  3. 相加后再除以m,得出精确数据


乘除法:
function accMultiply(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); }
原理:
  1. 将乘数和被乘数转成字符串,计算其小数点后位数的和(m)
  2. 将乘数和被乘数去掉小数点(转成整数)后,转为Number类型(可以精确乘运算)
  3. 相乘后除以10的m次方,得出精确数据
0 0