/**
* num 小数个数
* @param {*} num
*/
export function fractionalPart (num) {
return num.toString().split('.').length === 1
? 0
: num.toString().split('.')[1].length
}
/**
* add 加
* @param {Number} a
* @param {Number} b
* @returns {Number} a+b
*/
export function addNum (a, b) {
const c = fractionalPart(a)
const d = fractionalPart(b)
const e = Math.pow(10, Math.max(c, d))
return (mulNum(a, e) + mulNum(b, e)) / e
}
/**
* subtract 减
* @param {Number} a
* @param {Number} b
* @returns {Number} a - b
*/
export function subNum (a, b) {
const c = fractionalPart(a)
const d = fractionalPart(b)
const e = Math.pow(10, Math.max(c, d))
return (mulNum(a, e) - mulNum(b, e)) / e
}
/**
* multiply 乘
* @param {Number} a
* @param {Number} b
* @returns {Number} a * b
*/
export function mulNum (a, b) {
const c = fractionalPart(a) + fractionalPart(b)
return (
(Number(a.toString().replace('.', '')) *
Number(b.toString().replace('.', ''))) /
Math.pow(10, c)
)
}
/**
* divide 除
* @param {Number} a
* @param {Number} b
* @returns {Number} a / b
*/
export function divNum (a, b) {
const c = Number(a.toString().replace('.', ''))
const d = Number(b.toString().replace('.', ''))
return mulNum(c / d, Math.pow(10, fractionalPart(b) - fractionalPart(a)))
}