js中数组中的字段进行相加,精度丢失的问题

316 阅读1分钟

描述:项目中要求,将数据里面的price字段所对应的数字拿出来,进行相加。将其数据的总和算出来,传递给后端。 主要使用的方法是Math.pow,Math.max,Math.round。具体做法见下面的代码:

function(arr){
 const fieldArr = [];
      for (var i = 0; i < arr.length; i++) {
        var m, field;
        try {
          field = arr[i].toString().split(".")[1].length;
        } catch (e) {
          field = 0;
        }
        fieldArr.push(field);
      }
      m = Math.pow(10, Math.max(...fieldArr));
      let add = 0;
      arr.forEach(function (item) {
        add = add + item * m;
      });

      let sum = Math.round(add) / m;
      return sum;
}
     

arr是所要运算的数组