'use strict'; const Decimal = require('decimal.js'); const _ = require('lodash'); // Decimal.set({ precision: 2 }); module.exports = { turnDecimal(n) { if (_.isObject(n)) { n = JSON.parse(JSON.stringify(n)); if (_.isObject(n)) n = _.get(n, '$numberDecimal'); } return new Decimal(n); }, // 加法 plus(n1 = 0, n2 = 0) { const number1 = this.turnDecimal(n1); const number2 = this.turnDecimal(n2); const result = number1.add(number2).toFixed(2, Decimal.ROUND_DOWN); return this.toNumber(result); }, // 减法 minus(n1 = 0, n2 = 0) { const number1 = this.turnDecimal(n1); const number2 = this.turnDecimal(n2); const result = number1.minus(number2).toFixed(2, Decimal.ROUND_DOWN); return this.toNumber(result); }, // 乘法 multiply(n1 = 0, n2 = 0) { const number1 = this.turnDecimal(n1); const number2 = this.turnDecimal(n2); const result = number1.mul(number2).toFixed(2, Decimal.ROUND_DOWN); return this.toNumber(result); }, // 除法 divide(n1 = 0, n2 = 0) { const number1 = this.turnDecimal(n1); const number2 = this.turnDecimal(n2); const result = number1.div(number2).toFixed(2, Decimal.ROUND_DOWN); return this.toNumber(result); }, toNumber(num) { if (_.isObject(num)) { num = JSON.parse(JSON.stringify(num)); if (_.isObject(num)) num = _.get(num, '$numberDecimal'); } return new Decimal(num).toNumber(); }, };