解决js小数位加减乘除精确问题

解决js小数位加减乘除精确问题,第1张

相比前端进行计算,有好多小数位加减乘除出现科学计数,倒是精确不对,来面我写一些解决该问题的办法,上代码!

加法运算:

function accAdd ( arg1, arg2){
  let 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)
 }

减法运算:

function accSub ( arg1, arg2){
  let 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)
 }

乘法运算:

function accMul ( arg1, arg2){
 let r1 = arg1.toString();
 let r2 = arg2.toString();
 let m = 0;
 try {
  m += arg1.toString().split('.')[1].length
 }catch(e){}
 try {
  m += arg2.toString().split('.')[1].length
 }catch(e){}
 return (Number(r1.replace('.','')) * Number(r2.replace('.',''))) / Math.pow(10,m)
}

除法运算:

function accDiv(arg1, arg2){
 let r1,r2,t1 = 0,t2 = 0;
 arg1 = arg1.toString();
 arg2 = arg2.toString();
 try{
  t1 = arg1.split('.').length;
 }catch(e){}
 try {
  t2 = arg2.split('.').length;
 }
 r1 = Number(arg1.replace('.',''));
 r2 = Number(arg2.replace('.',''));
 let num = Math.pow(10, t2-t1);
 let num1 = r1/r2;
 return accMul(num1, num) //调用乘法
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/563198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存