在处理简单的1-0.7的时候发现chorme给的结果竟然是0.30000000000000004,瞬间蛋疼了,这数据能用?!
然后去百度找到了简单的两个数的加减乘除,然后修改了下,除了除法都可以多个数进行操作。那样3个数相加就不用套个add函数了。
原网址:http://www.2cto.com/kf/201502/376763.html
function add() {
var e,arr=[0],result = 0;
for (var i = 0; i < arguments.length; i++) {
try {
arr.push(arguments[i].toString().split(".")[1].length);
} catch (f) {}
};
arr.sort(function(a,b){return(b-a)});
e = Math.pow(10, arr[0]);
for (var i = 0; i < arguments.length; i++) {
try {
result += mul(arguments[i],e)
} catch (f) {}
};
return result / e;
}
function sub() {
var e,arr=[0],result;
for (var i = 0; i < arguments.length; i++) {
try {
arr.push(arguments[i].toString().split(".")[1].length);
} catch (f) {}
};
arr.sort(function(a,b){return(b-a)});
e = Math.pow(10, arr[0]);
result = mul(arguments[0],e);
for (var i = 1; i < arguments.length; i++) {
try {
result -= mul(arguments[i],e)
} catch (f) {}
};
return result / e;
}
function mul() {
var result = 1,c = 0;
for (var i = 0; i < arguments.length; i++) {
try {
c += arguments[i].toString().split(".")[1].length;
} catch (f) {}
};
for (var i = 0; i < arguments.length; i++) {
result *= Number(arguments[i].toString().replace(".", ""));
};
result /= Math.pow(10, c);
return result;
}
function div(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(".", "")), mul(c / d, Math.pow(10, f - e));
}