js浮点数精确计算(加、减、乘、除)


Posted in Javascript onDecember 26, 2013
<SPAN style="FONT-SIZE: 18px">//说明: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  
}</SPAN> 

<SPAN style="FONT-SIZE: 18px">  //说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。   
//调用:accSub(arg1,arg2)   
//返回值:arg1减上arg2的精确结果   
function accSub(arg1,arg2){      
    return accAdd(arg1,-arg2);  
}</SPAN>

<SPAN style="FONT-SIZE: 18px">  //说明: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)  
}</SPAN>

<SPAN style="FONT-SIZE: 18px">  //说明: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);  
    }  
}</SPAN> 
Javascript 相关文章推荐
javaScript 简单验证代码(用户名,密码,邮箱)
Sep 28 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
Sep 16 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
less简单入门(CSS 预处理语言)
Mar 08 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 Javascript
使用layer弹窗,制作编辑User信息页面的方法
Sep 27 Javascript
用Golang运行JavaScript的实现示例
Nov 25 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
js观察者模式的弹幕案例
Nov 23 Javascript
js整数字符串转换为金额类型数据(示例代码)
Dec 26 #Javascript
Jquery解析json数据详解
Dec 26 #Javascript
Jquery getJSON方法详细分析
Dec 26 #Javascript
JQuery判断HTML元素是否存在的两种解决方法
Dec 26 #Javascript
JS 仿腾讯发表微博的效果代码
Dec 25 #Javascript
javascript使用定时函数实现跳转到某个页面
Dec 25 #Javascript
JS不间断向上滚动效果代码
Dec 25 #Javascript
You might like
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php实现分页工具类分享
2014/01/09 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
js 操作select相关方法函数
2009/12/06 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
Firefox中使用outerHTML的2种解决方法
2014/06/07 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
深入了解JavaScript词法作用域
2020/07/29 Javascript
详解Python编程中包的概念与管理
2015/10/16 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
什么是"引用"?申明和使用"引用"要注意哪些问题?
2016/03/03 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
上班迟到检讨书
2014/01/10 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
新闻人物通讯稿
2014/10/09 职场文书
党员批评与自我批评
2014/10/15 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL