/**
* @param {*} 数字1
* @param {*} 数字2
* @description 两字数据相加精确处理
*/
export const addNum = function () {
let args = arguments// 获取所有的参数
let d = 0// 定义小数位的初始长度,默认为整数,即小数位为0
let sum = 0// 定义sum来接收所有数据的和
// 循环所有的参数
for (let key in args) { // 遍历所有的参数
// 把数字转为字符串
var str = '' + args[key]
if (str.indexOf('.') !== -1) { // 判断数字是否为小数
// 获取小数位的长度
var temp = str.split('.')[1].length
// 比较此数的小数位与原小数位的长度,取小数位较长的存储到d中
d = d < temp ? temp : d
}
}
// 计算需要乘的数值
var m = Math.pow(10, d)
// 遍历所有参数并相加
for (var key in args) {
sum += args[key] * m
}
// 返回结果
return sum / m
}
两个浮点数相减
export const accSub = function (num1, num2) {
var r1, r2, m, n
try {
r1 = num1.toString().split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = num2.toString().split('.')[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2))
n = (r1 >= r2) ? r1 : r2
return (Math.round(num1 * m - num2 * m) / m).toFixed(n)
}
保留小数位数
export const getFloat = function (num, n) {
n = n ? parseInt(n) : 0
if (n <= 0) {
return Math.round(num)
}
num = Math.round(num * Math.pow(10, n)) / Math.pow(10, n) // 四舍五入
return num
}