js加减乘除运算重写
来源:互联网 发布:老巴黎西洋家具淘宝网 编辑:程序博客网 时间:2024/04/30 02:38
忘了这个从哪里看到的,如果作者看到了请留言,我加上出处。
这个写法源自JS的bug,浮点运算结果与实际结果有偏差。所以找了一个重写的方法,直接拿来就可以用拉。
我们不生产代码,我们只是代码的搬运工。
//说明: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 }//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。 //调用:accSub(arg1,arg2) //返回值:arg1减上arg2的精确结果 function accSub(arg1,arg2){ return accAdd(arg1,-arg2); }//说明: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) }//说明: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); } }
0 0
- js加减乘除运算重写
- JS 浮点加减乘除运算
- JS浮点运算 加减乘除
- JS小数加减乘除运算
- 2015/7/22/异常/重写/字符串加减乘除运算
- 加减乘除运算
- 加减乘除运算
- 加减乘除运算
- js中float类型加减乘除运算精度问题
- 用js来进行简单的加减乘除运算
- JS 四则运算(加减乘除小数运算)避免损失精度
- js加减乘除
- js 加减乘除
- js 加减乘除
- js 加减乘除
- 整型的加减乘除运算
- 精确的加减乘除运算
- BigDecimal加减乘除运算
- EditText在启动Activity时不自动获取焦点
- Qt之QTableView添加复选框(QAbstractItemDelegate)
- docker安装
- 关于background-size各个参数详解
- Java系统调优:内存管理与垃圾回收
- js加减乘除运算重写
- Apache Thrift 下篇(1)
- fragment管理
- 修改oracle用户密码永不过期
- poj 1733 Parity game(带权并查集)
- WindowsAPI - Net - WSAStartup - Baidu.com
- SQLAlchemy 笔记 ORM方式访问数据库
- Android&java的成长之路之六(2048小游戏②)
- 交换机工作原理