涉及到金额等非准确信息的时候 使用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))
},
本文介绍了如何在JavaScript中利用big.js库进行高精度数学运算,包括加法、减法、乘法、除法和求绝对值。示例代码展示了在计算含税和不含税金额时如何避免精度丢失的问题,以及对总金额的计算方法。
392

被折叠的 条评论
为什么被折叠?



