乐趣区

关于javascript:js-精确计算

 
// 调用:accAdd(arg1,arg2)
// 返回值:arg1 加上 arg2 的准确后果

export function accAdd(arg1, arg2) {if (arg1 !== undefined && arg2 !== undefined) {
    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 (arg1 * m + arg2 * m) / m;
  }
}

 
// 调用:accSub(arg1,arg2)
// 返回值:arg1 减上 arg2 的准确后果

export function accSub(arg1, arg2) {return accAdd(arg1, -arg2);
}

 
// 调用:accMul(arg1,arg2)
// 返回值:arg1 乘以 arg2 的准确后果

export function accMul(arg1, arg2) {if (arg1 !== undefined && arg2 !== undefined) {
    var m = 0;
    var s1 = arg1.toString();
    var 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);
  }
}

 
// 调用:accDiv(arg1,arg2)
// 返回值:arg1 除以 arg2 的准确后果

export function accDiv(arg1, arg2) {if (arg1 !== undefined && arg2 !== undefined) {
    var t1, t2, r1, r2;
    try {t1 = arg1.toString().split('.')[1].length;
    } catch (e) {t1 = 0;}
    try {t2 = arg2.toString().split('.')[1].length;
    } catch (e) {t2 = 0;}
    r1 = Number(arg1.toString().replace('.', ''));
    r2 = Number(arg2.toString().replace('.', ''));
    return accMul(r1 / r2, Math.pow(10, t2 - t1));
  }
}
退出移动版