美文网首页
JS浮点数计算精度

JS浮点数计算精度

作者: RadishHuang | 来源:发表于2021-08-25 11:16 被阅读0次

JS的浮点数,计算都是会有问题的。下面给出加减乘除的解决办法

  • 131.20*100 = 13119.999999
  • 0.1+0.2 = 0.3000000000004
  • 1.2/12 = 0.099999999999
  • 0.4-0.1= 0.30000000000004

export const accAdd = (arg1, arg2) => {
  // 增加浮点数计算方法
  let 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 (accMul(arg1, m) + accMul(arg2, m)) / (m * 1.0)
}
export const accMul = (arg1, arg2) => {
  // 增加浮点数的相乘方法
  var m = 0,
    s1 = arg1.toString(),
    s2 = arg2.toString();
  try {
    m += s1.split('.')[1].length;
  } catch (e) {
    // ee
  }
  try {
    m += s2.split('.')[1].length;
  } catch (e) {
    //e
  }
  return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m);
}
export const accDiv = (arg1, arg2) => {
  var t1 = 0,
    t2 = 0,
    r1,
    r2;
  try {
    t1 = arg1.toString().split('.')[1].length;
  } catch (e) {
    // e
  }
  try {
    t2 = arg2.toString().split('.')[1].length;
  } catch (e) {
    // e
  }
  r1 = Number(arg1.toString().replace('.', ''));
  r2 = Number(arg2.toString().replace('.', ''));
  return (r1 / r2) * Math.pow(10, t2 - t1);
}

export const accSub = (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));
  //last modify by deeka
  //动态控制精度长度
  n = (r1 >= r2) ? r1 : r2;
  return ((accMul(arg1, m) - accMul(arg2, m)) / (m * 1.0)).toFixed(n);
}


相关文章

  • js精度问题

    关于js浮点数计算精度不准确问题的解决办法 今天在计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前就一...

  • JS浮点数计算精度

    JS的浮点数,计算都是会有问题的。下面给出加减乘除的解决办法 131.20*100 = 13119.999999 ...

  • js 处理四则运算失去精度问题

    js 处理四则运算失去精度问题 计算精度,特别是浮点数计算。举个栗子 然后我寻求各种解决办法,其中用了lodash...

  • 备忘

    1、js中解决数字计算精度问题,math.js bignumber. math.js https://blog.c...

  • js浮点运算

    前言 在项目开发过程中发现浮点数的运算会出现精度问题,尤其是乘除运算。产生浮点数计算精度不准确的原因: 在计算机角...

  • Java浮点数计算精度问题总结

    Java浮点数计算精度问题总结 首先看看下面几个简单的加法计算的输出结果:System.out.println(0...

  • iOS 浮点数的精确计算和四舍五入问题

    iOS开发中,使用浮点数(float,double)类型运算需要注意计算精度的问题。即使只是两位小数,也会出现误差...

  • 浮点数计算精度问题

    产生的原因 计算机在进行运算时是将数值转为二进制后计算,我们可以通过num.toString(2)这个方法查看转为...

  • js浮点数计算精度问题案例及解决方案

    在项目中计算商品价格的时候再次遇到js浮点数计算出现误差的问题,以前一碰到这个问题就用tofixed方法进行处理一...

  • js 浮点数计算

    在做项目的时候,涉及到金额加减时,经常会出现计算精度的问题,常见例子如下: 在遇到浮点数运算后出现的精度问题时,起...

网友评论

      本文标题:JS浮点数计算精度

      本文链接:https://www.haomeiwen.com/subject/siesiltx.html