/**
* 加法运算,避免数据相加小数点后产生多位数和计算精度损失。
*
* @param a加数1 | b加数2
*/
function numAdd(a, b) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = a.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = b.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
return (a * baseNum + b * baseNum) / baseNum;
};
/**
* 加法运算,避免数据相减小数点后产生多位数和计算精度损失。
*
* @param a被减数 | b减数
*/
function numSub(a, b) {
var baseNum, baseNum1, baseNum2;
var precision;// 精度
try {
baseNum1 = a.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = b.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
return ((a * baseNum - b * baseNum) / baseNum).toFixed(precision);
};
/**
* 乘法运算,避免数据相乘小数点后产生多位数和计算精度损失。
*
* @param a被乘数 | b乘数
*/
function numMulti(a, b) {
var baseNum = 0;
try {
baseNum += a.toString().split(".")[1].length;
} catch (e) {
}
try {
baseNum += b.toString().split(".")[1].length;
} catch (e) {
}
return Number(a.toString().replace(".", "")) * Number(b.toString().replace(".", "")) / Math.pow(10, baseNum);
};
/**
* 除法运算,避免数据相除小数点后产生多位数和计算精度损失。
*
* @param a被除数 | b除数
*/
function numDiv(a, b) {
var b1 = 0, b2 = 0;
var b3, b4;
try {
b1 = a.toString().split(".")[1].length;
} catch (e) {
b1 = 0;
}
try {
b2 = b.toString().split(".")[1].length;
} catch (e) {
b2 = 0;
}
with (Math) {
b2 = Number(a.toString().replace(".", ""));
b4 = Number(b.toString().replace(".", ""));
return (b2 / b4) * pow(10, b2 - b1);
}
}
04-24
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交