js小数相加精度不准确

例: 0.1+0.1+0.1+0.7 != 1

   0.1+0.2 != 0.3

解决办法: 

  相加

  function addNum(num1, num2) {
          let sq1, sq2;
          try {
              sq1 = num1.toString().split(".")[1].length;
          } catch (e) {
              sq1 = 0;
          }
          try {
              sq2 = num2.toString().split(".")[1].length;
          } catch (e) {
              sq2 = 0;
          }
          const m = Math.pow(10, Math.max(sq1, sq2));
          return (num1 * m + num2 * m) / m;
    }
  相除
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);
  }
}

相乘
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)}
)}
posted @ 2022-12-20 11:03  郭大蛋子  阅读(325)  评论(0编辑  收藏  举报