加法运算函数
/**
* 加法函数
* @param summand {number|string} 被加数
* @param addend {number|string} 加数
* @returns {number} 计算结果
*/
export function accAdd(summand, addend) {
let r1
let r2
try {
r1 = summand.toString().split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = addend.toString().split('.')[1].length
} catch (e) {
r2 = 0
}
const c = Math.abs(r1 - r2)
const m = Math.pow(10, Math.max(r1, r2))
if (c > 0) {
const cm = Math.pow(10, c)
if (r1 > r2) {
summand = Number(summand.toString().replace('.', ''))
addend = Number(addend.toString().replace('.', '')) * cm
} else {
summand = Number(summand.toString().replace('.', '')) * cm
addend = Number(addend.toString().replace('.', ''))
}
} else {
summand = Number(summand.toString().replace('.', ''))
addend = Number(addend.toString().replace('.', ''))
}
return Number((summand + addend) / m)
}
减法运算函数
/**
* 减法函数
* @param minute {number|string} 被减数
* @param minus {number|string} 减数
* @returns {number} 计算结果
*/
export function accSub(minute, minus) {
let r1
let r2
try {
r1 = minute.toString().split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = minus.toString().split('.')[1].length
} catch (e) {
r2 = 0
}
const m = Math.pow(10, Math.max(r1, r2)) // 动态控制精度长度
const n = r1 >= r2 ? r1 : r2
return Number(((minute * m - minus * m) / m).toFixed(n))
}
乘法运算函数
/**
* 乘法函数
* @param multiplicand {number|string} 被乘数
* @param multiplier {number|string} 乘数
* @returns {number} 计算结果
*/
export function accMul(multiplicand, multiplier) {
let m = 0
const s1 = multiplicand.toString()
const s2 = multiplier.toString()
try {
m += s1.split('.')[1].length
} catch (e) {
m = 0
}
try {
m += s2.split('.')[1].length
} catch (e) {
m = m || 0
}
return Number(
(Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10,
m))
}
除法运算函数
/**
* 除法运算
* @param dividend {number|string} 被除数
* @param divisor {number|string} 除数
* @returns {number} 计算结果
*/
export function accDiv(dividend, divisor) {
let t1
let t2
try {
t1 = dividend.toString().split('.')[1].length
} catch (e) {
t1 = 0
}
try {
t2 = divisor.toString().split('.')[1].length
} catch (e) {
t2 = 0
}
const r1 = Number(dividend.toString().replace('.', ''))
const r2 = Number(divisor.toString().replace('.', ''))
return Number((r1 / r2) * Math.pow(10, t2 - t1))
}