求js代码解释

2025-02-02 10:45:39
推荐回答(2个)
回答1:

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);
    }
}

回答2:

js中除法有很误差,特别是小数之间,先别数字拆分成整数相除,再计算,以解决js算法中的误差