js 加减乘除

加法函数,用来得到精确的加法结果

/** 
** 加法函数,用来得到精确的加法结果 
** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 
** 调用:accAdd(arg1,arg2) 
** 返回值:arg1加上arg2的精确结果 
**/ 
function accAdd(arg1, arg2) { 
var r1, r2, m, c; 
try { 
r1 = arg1.toString().split(“.”)[1].length; 

catch (e) { 
r1 = 0; 

try { 
r2 = arg2.toString().split(“.”)[1].length; 

catch (e) { 
r2 = 0; 

c = Math.abs(r1 - r2); 
m = Math.pow(10, Math.max(r1, r2)); 
if (c > 0) { 
var cm = Math.pow(10, c); 
if (r1 > r2) { 
arg1 = Number(arg1.toString().replace(“.”, “”)); 
arg2 = Number(arg2.toString().replace(“.”, “”)) * cm; 
} else { 
arg1 = Number(arg1.toString().replace(“.”, “”)) * cm; 
arg2 = Number(arg2.toString().replace(“.”, “”)); 

} else { 
arg1 = Number(arg1.toString().replace(“.”, “”)); 
arg2 = Number(arg2.toString().replace(“.”, “”)); 

return (arg1 + arg2) / m; 
}

//给Number类型增加一个add方法,调用起来更加方便。 
Number.prototype.add = function (arg) { 
return accAdd(arg, this); 
}; 
减法函数,用来得到精确的减法结果

/** 
** 减法函数,用来得到精确的减法结果 
** 说明:javascript的减法结果会有误差,在两个浮点数相减的时候会比较明显。这个函数返回较为精确的减法结果。 
** 调用:accSub(arg1,arg2) 
** 返回值:arg1加上arg2的精确结果 
**/ 
function accSub(arg1, arg2) { 
var r1, r2, m, n; 
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)); //last modify by deeka //动态控制精度长度 
n = (r1 >= r2) ? r1 : r2; 
return ((arg1 * m - arg2 * m) / m).toFixed(n); 
}

// 给Number类型增加一个mul方法,调用起来更加方便。 
Number.prototype.sub = function (arg) { 
return accMul(arg, this); 
}; 
乘法函数,用来得到精确的乘法结果

/** 
** 乘法函数,用来得到精确的乘法结果 
** 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
** 调用:accMul(arg1,arg2) 
** 返回值:arg1乘以 arg2的精确结果 
**/ 
function accMul(arg1, arg2) { 
var m = 0, s1 = arg1.toString(), 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); 
}

// 给Number类型增加一个mul方法,调用起来更加方便。 
Number.prototype.mul = function (arg) { 
return accMul(arg, this); 
}; 
除法函数,用来得到精确的除法结果

/** 
** 除法函数,用来得到精确的除法结果 
** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 
** 调用:accDiv(arg1,arg2) 
** 返回值:arg1除以arg2的精确结果 
**/ 
function accDiv(arg1, arg2) { 
var t1 = 0, t2 = 0, r1, r2; 
try { 
t1 = arg1.toString().split(“.”)[1].length; 

catch (e) { 

try { 
t2 = arg2.toString().split(“.”)[1].length; 

catch (e) { 

with (Math) { 
r1 = Number(arg1.toString().replace(“.”, “”)); 
r2 = Number(arg2.toString().replace(“.”, “”)); 
return (r1 / r2) * pow(10, t2 - t1); 

}

//给Number类型增加一个div方法,调用起来更加方便。 
Number.prototype.div = function (arg) { 
return accDiv(this, arg); 
};

获取URL中的参数值 
function getQueryString(name) { 
var reg = new RegExp(“(^|&)” + name + “=([^&]*)(&|$)”, “i”); 
var r = window.location.search.substr(1).match(reg); 
if (r != null) 
return unescape(r[2]); 
return null; 
}

全部评论
红名葫芦娃~
点赞 回复 分享
发布于 2016-09-18 14:56

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务