2019-12-06 js数字计算精度误差问题,解决办法!!!

需要拿走,有问题请提出,不谢 🤣🤣🤣

Number.prototype.add = function(num) {
  let str = this.toString().split('.')
  let str1 = num.toString().split('.')

  let that = 0
  let thatNum = 0

  if (str.length > 1) {
    that = str[1].length
  }

  if (str1.length > 1) {
    thatNum = str1[1].length
  }

  let len = Math.pow(10, Math.max(that, thatNum))

  return (this * len + num * len) / len
}

Number.prototype.sub = function(num) {
  let str = this.toString().split('.')
  let str1 = num.toString().split('.')

  let len = 0
  let lenNum = 0

  if (str.length > 1) {
    len = str[1].length
  }

  if (str1.length > 1) {
    lenNum = str1[1].length
  }

  let pow = Math.pow(10, Math.max(len, lenNum))

  return (this * len - num * pow) / pow
}

Number.prototype.sub = function(num) {
  let str = this.toString().split('.')
  let str1 = num.toString().split('.')

  let len = 0
  let lenNum = 0

  if (str.length > 1) {
    len = str[1].length
  }

  if (str1.length > 1) {
    lenNum = str1[1].length
  }

  let pow = Math.pow(10, Math.max(len, lenNum))

  return (this * len - num * pow) / pow
}

Number.prototype.multiply = function(num) {
  let strThis = this.toString()
  let strNum = num.toString()
  let str = strThis.split('.')
  let str1 = strNum.split('.')
  let len = 0

  if (str.length > 1) {
    len += str[1].length
  }

  if (str1.length > 1) {
    len += str1[1].length
  }
  
  let pow = Math.pow(10, len)

  return (strThis.replace('.', '') * strNum.replace('.', '')) / pow
}

Number.prototype.divide = function(num) {
  let strThis = this.toString()
  let strNum = num.toString()
  let str = strThis.split('.')
  let len = strNum.length

  if (str.length > 1) {
    len += str[1].length
  }

  let pow = Math.pow(10, len)

  return this * pow / num / pow
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我想不通自己怎么会穷? 没道理啊? 我是从农村考大学出来的,知识改变了命运。想着那些依旧留在那片穷山恶水中挣扎的小...
    三湖之春阅读 332评论 28 20
  • 出来得早了,并没有预料中的堵车,不过也很快的逃离了单位,一路开心着。 在候机室遇到按摩椅,想起在长沙和好友一起按摩...
    街角青年阅读 184评论 0 0
  • 企业名称:海口美兰美购城实业有限公司 【时间】始于2018/5/1持续于2019/4/30 日精进打卡第360天 ...
    杨慧裕阅读 106评论 0 0
  • 拾捡到一座年长的城 用碎瓦片当做记录新生活的纸张 ————题记 1 每一天 我害怕被发...
    Berry贝瑞阅读 251评论 0 3