reduce计算表格某一列的累加和,number-precision

本文介绍如何利用JavaScript的reduce方法计算商品列表中单品售价的累加和,以得出整单售价,并探讨了在计算过程中遇到的精度问题,推荐使用number-precision库来解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

reduce 计算商品列表中某一列(单品售价)的累加和( 整单售价)

orderCommoditys 商品列表数组

let allList = (this.orderCommoditys || []).reduce(function (a, b) {
 return {             
// 数量
quantityAll: NP.plus(a.quantityAll, Number(b.quantity) || 0),
// 基准价  总基准价自营:商品明细的basePrice*quantity               
basePriceAll: NP.plus(a.basePriceAll, NP.times(Number(b.quantity) || 0 , Number(b.basePrice) || 0))
   }
}, {basePriceAll: 0, openPriceAll: 0, quantityAll: 0})å
this.quantityAll = allList.quantityAll;
this.basePriceAll = allList.basePriceAll;     

{basePriceAll: 0, openPriceAll: 0, quantityAll: 0}
NP传参数至少两个值, 如果数组中无返回值的时候会报错,所以给初始值默认传零

解决js 计算精度问题number-precision

  • 安装
npm install number-precision --save
  • 方法
import NP from 'number-precision'
npm install number-precision --save

NP.strip(num)         // strip a number to nearest right number
NP.plus(num1, num2, num3, ...)   // addition, num + num2 + num3, two numbers is required at least.
NP.minus(num1, num2, num3, ...)  // subtraction, num1 - num2 - num3
NP.times(num1, num2, num3, ...)  // multiplication, num1 * num2 * num3
NP.divide(num1, num2, num3, ...) // division, num1 / num2 / num3
NP.round(num, ratio)  // round a number based on ratio
  • 例子
import NP from 'number-precision'
NP.strip(0.09999999999999998); // = 0.1
NP.plus(0.1, 0.2);             // = 0.3, not 0.30000000000000004
NP.plus(2.3, 2.4);             // = 4.7, not 4.699999999999999
NP.minus(1.0, 0.9);            // = 0.1, not 0.09999999999999998
NP.times(3, 0.3);              // = 0.9, not 0.8999999999999999
NP.times(0.362, 100);          // = 36.2, not 36.199999999999996
NP.divide(1.21, 1.1);          // = 1.1, not 1.0999999999999999
NP.round(0.105, 2);            // = 0.11, not 0.1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值