对于js浮点数误差问题 完美解决办法
来源:互联网 发布:php 解析html 编辑:程序博客网 时间:2024/05/19 20:42
//除法函数,用来得到精确的除法结果 //说明: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); } //乘法函数,用来得到精确的乘法结果 //说明: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的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 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(10,Math.max(r1,r2)) return (arg1*m+arg2*m)/m } //给Number类型增加一个add方法,调用起来更加方便。 Number.prototype.add = function (arg){ return accAdd(arg,this); } //减法函数,用来得到精确的减法结果 //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。 //调用:accSubtr(arg1,arg2) //返回值:arg1减去arg2的精确结果 function accSubtr(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));//动态控制精度长度n=(r1>=r2)?r1:r2;return ((arg1*m-arg2*m)/m).toFixed(n);} //给Number类型增加一个subtr 方法,调用起来更加方便。 Number.prototype.subtr = function (arg){ return accSubtr(arg,this); }
0 0
- 对于js浮点数误差问题 完美解决办法
- JS浮点数加减乘除误差问题
- 浮点数误差问题?
- JS浮点数运算出现误差解决方案
- 关于浮点数的运算误差问题
- java浮点数出现误差问题
- 08_浮点类型_浮点数误差问题
- 浮点数的误差
- 浮点数的误差
- 浮点数误差陷阱
- js浮点数问题
- fscanf直接获取浮点数误差问题及解决
- PHP对于浮点数运算问题
- HDU1701 ACMer 【浮点数误差】
- 1.浮点数运算误差
- 浮点数的精确误差
- java学习之旅08--浮点数_浮点数误差问题
- js浮点数精度问题
- 1191: [HNOI2006]超级英雄Hero
- 深入理解计算机系统中网络编程一节echo客户端服务器的源码编译和运行
- Android静态变量的生命周期
- Android控件之ListView ChoickModel 单选、多选模式
- linux用户态和内核态理解
- 对于js浮点数误差问题 完美解决办法
- 弹性ListView
- leetcode Reverse Words in a String
- 开发工具之Eclipse快捷键
- ZIGBEE中SerialApp_ProcessEvent分析
- 基于重心偏移的视差计算
- Android获取图片并裁剪
- jQuery选择器总结
- Scala IED For Eclipse