js 浮点计算不精确,这个函数返回较为精确的加法结果,网上有一大堆这样的,在此只演示加法。
那么,如果用了这个以后还是不够精确呢?简单来说,这个的原理就是把浮点放大100倍。
m = Math.pow(100, Math.max(r1, r2));
如果不够精确,就多加一个0
m = Math.pow(1000, Math.max(r1, r2));
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(100, Math.max(r1, r2));
return (this.Mul(arg1, m) + this.Mul(arg2, m)) / m;
}