Commit cdfe16b4 authored by 刘攀's avatar 刘攀

修复精度计算问题

parent da349f08
......@@ -174,16 +174,76 @@ class Util {
// 数字运算,处理精度问题
numCalc(type, num1, num2) {
// 最多保留两位小数,不四舍五入
num1 = Math.floor(Number(num1) * 100)
num2 = Math.floor(Number(num2) * 100)
if (type === '+') {
return (num1 + num2) / 100
return add(num1, num2)
} else if (type === '-') {
return (num1 - num2) / 100
return sub(num1, num2)
} else if (type === '*') {
return (num1 * num2) / 100
return mul(num1, num2)
} else if (type === '/') {
return METHOD.notRoundedToFixed(num1 / num2 / 100)
return div(num1, num2)
}
function add(org1, org2) {
var r1, r2, m
try {
r1 = Number(org1)
.toString()
.split('.')[1].length
} catch (e) {
r1 = 0
}
try {
r2 = Number(org2)
.toString()
.split('.')[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2))
return (Number(org1) * m + Number(org2) * m) / m
}
function sub(r1, r2) {
return add(r1, -r2)
}
function mul(org1, org2) {
var m = 0,
s1 = Number(org1).toString(),
s2 = Number(org2).toString()
try {
m += s1.split('.')[1].length
} catch (e) {}
try {
m += s2.split('.')[1].length
} catch (e) {}
return (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) / Math.pow(10, m)
}
function div(org1, org2) {
var t1 = 0,
t2 = 0,
r1,
r2
try {
t1 = Number(org1)
.toString()
.split('.')[1].length
} catch (e) {}
try {
t2 = Number(org2)
.toString()
.split('.')[1].length
} catch (e) {}
r1 = Number(
Number(org1)
.toString()
.replace('.', '')
)
r2 = Number(
Number(org2)
.toString()
.replace('.', '')
)
return (r1 / r2) * Math.pow(10, t2 - t1)
}
}
// 金额保留两位小数,不四舍五入
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment