js 小数计算失去精度
2021-04-02 07:24
标签:bsp style 常见问题 ber span spl length 精度 this 原因:小数计算会转化为二进制 精度丢失 举个例子:4.02*10的N次方 怎么算都是错的; 常见问题 0.1+0.2 !=0.3 。。。 处理:转化为小数进行计算 js 小数计算失去精度 标签:bsp style 常见问题 ber span spl length 精度 this 原文地址:https://www.cnblogs.com/zui1024/p/12557992.html//加法
function addNum (a,b){
var c,d,e;
try {
c = a.toString().split(".")[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split(".")[1].length;
} catch (f) {
d = 0;
}
return e = Math.pow(10,Math.max(c,d)),(multiNum(a,e) + multiNum(b,e)) / e;
}
//减法
function subNum (a,b) {
var c,d,e;
try {
c = a.toString().split(".")[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split(".")[1].length;
} catch (f) {
d = 0;
}
return e = Math.pow(10,Math.max(c,d)),(multiNum(a,e) - multiNum(b,e)) / e;
}
//乘法
function multiNum (a,b){
var c = 0,
d = a.toString(),
e = b.toString();
try {
c += d.split(".")[1].length;
} catch (f) { }
try {
c += e.split(".")[1].length;
} catch (f) { }
return Number(d.replace(".","")) * Number(e.replace(".","")) / Math.pow(10,c);
}
//除法
function divide (a,b){
var c,d,e = 0,
f = 0;
try {
e = a.toString().split(".")[1].length;
} catch (g) { }
try {
f = b.toString().split(".")[1].length;
} catch (g) { }
return c = Number(a.toString().replace(".","")),d = Number(b.toString().replace(".","")),this.mul(c / d,Math.pow(10,f - e));
}
上一篇:html
下一篇:npm与package.json