function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try {
//“split(".")[1]” 获取小数位
//“.length” 获取小数位长度
t1 = arg1.toString().split(".")[1].length;
} catch (e) {
//当没有小数位时 split(".") 只有1位,取下标[1]超出报错
//异常处理,保持默认值,即“0”位小数位
}
try {
t2 = arg2.toString().split(".")[1].length;
} catch (e) { } //同理
//声明 Math 域,域内涉及 Math 的方法或属性可以不写前缀
//这里只生效一句 pow(x, y)
//去掉该句,则加上前缀:Math.pow(x, y)
with (Math) {
//去掉被除数和除数小数点,并转为数值
r1 = Number(arg1.toString().replace(".", ""));
r2 = Number(arg2.toString().replace(".", ""));
//将商 乘以 10 的 (t2 - t1) 次幂[小数位差]
//例:
//1.2 / 0.05
//= 12 / 5 * pow(10, 2 - 1)
return (r1 / r2) * pow(10, t2 - t1);
}
}
js中除法有很误差,特别是小数之间,先别数字拆分成整数相除,再计算,以解决js算法中的误差