涉及到金额等非准确信息的时候 使用big.js来解决相关问题
加法plus2、减法minus3、乘法times4、除法div5、绝对值abs
1、安装依赖
npm install --save big.js
2、main.js 引入
import 'default-passive-events'
3、使用
1、加法 plus
// 例如:1+2
let result = parseFloat(new Big(1).plus(2)) // 3
2、减法 minus、
// 例如:1-2
let result = parseFloat(new Big(1).minus(2)) // -1
3、乘法 times
// 例如:1*2
let result = parseFloat(new Big(1).times(2)) // 2
4、除法
// 例如:1/2
let result = parseFloat(new Big(1).div(2)) // 0.5
5、绝对值
// 例如:-3
let result = parseFloat(new Big(-3).abs()) // 3
自己在项目中写的一个函数,供参考
// 计算 含税单价、含税金额、不含税金额、税额
computeAmount(val,row){
const withTaxAmountAverage = new Big(+row.withoutTaxAmountAverage).times(new Big(+row.taxRate).div(100).plus(1))
row.withTaxAmountAverage = parseFloat(withTaxAmountAverage.round(2))
row.withTaxAmount = parseFloat(withTaxAmountAverage.times(row.number).round(2))
row.withoutTaxAmount = parseFloat(new Big(+row.withoutTaxAmountAverage).times(+row.number).round(2))
row.taxAmount = parseFloat(new Big(row.withTaxAmount).minus(row.withoutTaxAmount).round(2))
this.computeAmountTotal()
},
// 计算总 含税金额、不含税金额、税额
computeAmountTotal(){
let withTaxAmount = new Big(0)
let withoutTaxAmount = new Big(0)
let taxAmount = new Big(0)
this.list.forEach(item => {
withTaxAmount = withTaxAmount.plus(+item.withTaxAmount)
withoutTaxAmount = withoutTaxAmount.plus(+item.withoutTaxAmount)
taxAmount = taxAmount.plus(+item.taxAmount)
})
this.formDate.withTaxAmount = parseFloat(withTaxAmount.round(2))
this.formDate.withoutTaxAmount = parseFloat(withoutTaxAmount.round(2))
this.formDate.taxAmount = parseFloat(taxAmount.round(2))
},