解决js浮点数相加不精准问题

发表于 JS 分类,标签:

// 相加的方法

function add() {

  // 需要相加的数字

  let _args = arguments;

  // 获取到所有小数点的位数

  let _pointArray = Array.prototype.map.call(_args, (item) => {

    let _itemArray = item.toString().split(".")

    return _itemArray.length > 1 ? _itemArray[1].length:0

  })

  // 最大小数点位数

  let _maxPoint = Math.max.apply(null, _pointArray);

  

  console.log(_maxPoint)

  // 放大的比值

  let _scale = Math.pow(10,_maxPoint) 

  // 最终的返回值

  return Array.prototype.reduce.apply(_args, [(a,b) =>  a + (b * _scale), 0]) / _scale 


console.log(add(1.528, 1.2, 1.6))

image.png

0 篇评论

发表我的评论