js 浮点数运算精度解决办法(加法) 笔记

javascript的带小数的加法会有误差

关尔先生2020-09-29 14:16:28
~

~
function plus(ab) {
  // 数字转字符
  a = String(a);
  b = String(b);
  // 按 . 分割成数组
  var arr = a.split('.')
  var brr = b.split('.')
  // 整数部分正常相加
  var rezheng = Number(arr[0]) + Number(brr[0])
  // 取小数部分
  var ax = (arr.length == 1? '0' : arr[1]
  var bx = (brr.length == 1? '0' : brr[1]
  // 较短的小数位数后面+0,变成相同位数  
  //  如 5 +12 => 50+12 (相当于0.50+0.12)
  var axl = ax.lengthbxl = bx.length;
  var a_b_l = axl - bxl;
  var maxl = axl;
  if (a_b_l > 0) {
    for (var i = 0i < a_b_li++) {
      bx += '0'
    }
  }
  if (a_b_l < 0) {
    maxl = bxl
    a_b_l = a_b_l * -1
    for (var i = 0i < a_b_li++) {
      ax += '0'
    }
  }
  //小数部分相加
  var rexiao = Number(ax+ Number(bx)
  // 如果小数相加进位了,加到整数上
  //   如 9+8 =17 ;  0.9+0.8 => 1.7 
  if (String(rexiao).length > maxl) {
    rexiao = String(rexiao).slice(maxl * -1)
    rezheng = rezheng + 1 
  }
  // 用小数点连接整数和小数,并返回
  return Number(rezheng + '.' + rexiao)
}
~~

jsjavaScript小数浮点数加法精度前端

上一篇:免费SSL证书申请安装教程(IIS)

下一篇:API接口测试神器POSTMAN下载地址

本文链接: http://www.nanshanqiao.com/zz_article/55.html

暂无评论