美文网首页
解决js浮点数计算bug的自定义加减乘除函数

解决js浮点数计算bug的自定义加减乘除函数

作者: 十一点后不在线 | 来源:发表于2021-09-22 17:00 被阅读0次
export function caculate(type, a, b) {
  // 加法
  function add(a, b) {
    let c
    let d
    try {
      c = a.toString().split('.')[1].length
    } catch (f) {
      c = 0
    }
    try {
      d = b.toString().split('.')[1].length
    } catch (f) {
      d = 0
    }
    const e = Math.pow(10, Math.max(c, d))
    return (mul(a, e) + mul(b, e)) / e
  }
  // 减法
  function sub(a, b) {
    var c, d, e
    try {
      c = a.toString().split('.')[1].length
    } catch (f) {
      c = 0
    }
    try {
      d = b.toString().split('.')[1].length
    } catch (f) {
      d = 0
    }
    e = Math.pow(10, Math.max(c, d))
    return (mul(a, e) - mul(b, e)) / e
  }
  // 乘法
  function mul(a, b) {
    let c = 0
    const d = a.toString()
    const e = b.toString()
    try {
      c += d.split('.')[1].length
    } catch (f) {
      // console.log('')
    }
    try {
      c += e.split('.')[1].length
    } catch (f) {
      // console.log('')
    }
    return Number(d.replace('.', '')) * Number(e.replace('.', '')) / Math.pow(10, c)
  }
  // 除法
  function div(a, b) {
    let e = 0
    let f = 0
    try {
      e = a.toString().split('.')[1].length
    } catch (g) {
      console.error(g)
    }
    try {
      f = b.toString().split('.')[1].length
    } catch (g) {
      console.error(g)
    }
    const c = Number(a.toString().replace('.', ''))
    const d = Number(b.toString().replace('.', ''))
    return mul(c / d, Math.pow(10, f - e))
  }
  const excute = {
    adds(a, b) {
      return add(a, b)
    },
    subs(a, b) {
      return sub(a, b)
    },
    muls(a, b) {
      return mul(a, b)
    },
    divs(a, b) {
      return div(a, b)
    }
  }
  return excute[type](a, b)
}

相关文章

  • 解决js浮点数计算bug的自定义加减乘除函数

  • JS浮点数计算精度

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

  • Js中做减法时,出现小数位增加Bug

    这个bug是Js固有的,这是因为在javascript中浮点数的计算是以2进制计算的,浮点数精度不准。可以用下面方...

  • js精度问题

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

  • js浮点数计算bug

    在js中,带小数的数据运算时可能会出现好多位小数。这是因为在js中浮点数的计算是以2进制计算的。解决办法就是先转成...

  • 个人代码库-待更新

    JS 浮点数相加不精确解决 浮点数取两位小数 css 内计算 input 按钮美化(input 上传框美化实例)

  • JS 浮点数计算 Bug 处理

    1.加: add(2.2,2.1)4.3 2.2+2.14.300000000000001 2.减: sub(1....

  • JS篇

    时间戳转换为年月日核心代码 input标签只输入数字 JS运算浮点数运算会有计算bug精确两位用toFixed(2...

  • 2019-08-13 测试

    0.1+0.2为什么不等于0.3?如何解决浮点的问题?了解bignumber.js的浮点数库函数 apply(),...

  • 浮点数运算 (加减乘除)

    【浮点数运算加减乘除】

网友评论

      本文标题:解决js浮点数计算bug的自定义加减乘除函数

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