最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
js数字计算 误差问题的快速解决方法
时间:2017-05-09 编辑:简简单单 来源:一聚教程网
代码如下 | 复制代码 |
//加法函数,用来得到精确的加法结果
//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
//调用:accAdd(arg1,arg2)
//返回值:arg1加上arg2的精确结果
functionadd(a,b){ varc, d, e; try{ c = a.toString().split(".")[1].length; }catch(f) { c = 0; } try{ d = b.toString().split(".")[1].length; }catch(f) { d = 0; } returne = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
} //乘法函数,用来得到精确的乘法结果 //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
//调用:accMul(arg1,arg2)
//返回值:arg1乘以arg2的精确结果
functionmul(a, b) { varc = 0, d = a.toString(), e = b.toString(); try{ c += d.split(".")[1].length; }catch(f) {} try{ c += e.split(".")[1].length; }catch(f) {} returnNumber(d.replace(".","")) * Number(e.replace(".","")) / Math.pow(10, c); } //减法函数,用来得到精确的减法结果
//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。
//调用:accSubtr(arg1,arg2)
//返回值:arg1减去arg2的精确结果
functionsub(a,b){ varc, d, e; try{ c = a.toString().split(".")[1].length; }catch(f) { c = 0; } try{ d = b.toString().split(".")[1].length; }catch(f) { d = 0; } returne = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;
} //除法函数,用来得到精确的除法结果
//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
//调用:accDiv(arg1,arg2)
//返回值:arg1除以arg2的精确结果
functiondiv(a, b) { varc, d, e = 0, f = 0; try{ e = a.toString().split(".")[1].length; }catch(g) {} try{ f = b.toString().split(".")[1].length; }catch(g) {} returnc = Number(a.toString().replace(".","")), d = Number(b.toString().replace(".","")), mul(c / d, Math.pow(10, f - e)); } |
-
上一个: js数字舍入误差以及解决方法(必看篇)
-
下一个: canvas绘图不清晰的解决方案
相关文章
- js数字舍入误差以及解决方法(必看篇) 05-09
- js实现兼容PC端和移动端滑块拖动选择数字效果 04-11
- js控制输入框只能输入一位并且是数字的教程 10-24
- 一句JS限制input只允许输入数字和字母 08-18
- js中parseInt数字,并求和用法详解 09-04
- js判断只能输入数字、字母代码总结 05-07