javaScriptにおける加減乗除の不正確な問題の解決方法
1525 ワード
javaScriptは小数の4つの混合演算については正確ではないので、カスタム関数で正確な演算を実現します.
// ,
// ,
// :javascript , 。 。
// :accDiv(arg1,arg2)
// :arg1 arg2
function accDiv(arg1, arg2) {
return accMul(arg1, 1 / arg2);
}
// , 。
// : ,
// :javascript , 。 。
// :accMul(arg1,arg2)
// :arg1 arg2
function accMul(arg1, arg2) {
var m = 0, s1 = arg1.toString(), s2 = arg2.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)
}
// ,
// :javascript , 。 。
// :accAdd(arg1,arg2)
// :arg1 arg2
function accAdd(arg1, arg2) {
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
return (accMul(arg1, m) + accMul(arg2, m)) / m;
}
// ,
// :javascript , 。 。
// :accSub(arg1,arg2)
// :arg1 arg2
function accSub(arg1, arg2) {
return accAdd(arg1, -arg2);
}