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 相关文章推荐
一个小型js框架myJSFrame附API使用帮助
Jun 28 Javascript
js获取ajax返回值代码
Apr 30 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
JS+Canvas绘制时钟效果
Aug 20 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
JavaScript字符串转数字的5种方法及遇到的坑
Jul 16 Javascript
JS实现点击按钮随机生成可拖动的不同颜色块示例
Jan 30 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
JS removeAttribute()方法实现删除元素的某个属性
Jan 11 Javascript
(开源)微信小程序+mqtt,esp8266温湿度读取
Apr 02 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
通过ODBC连接的SQL SERVER实例
2006/10/09 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
AngularJS解决ng-if中的ng-model值无效的问题
2017/06/21 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python正则表达式常用函数总结
2017/06/24 Python
Python有序字典简单实现方法示例
2017/09/28 Python
Python算法之图的遍历
2017/11/16 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python字典的遍历3种方法详解
2019/08/10 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
导游的职业规划书范文
2013/12/27 职场文书
自考生自我评价分享
2014/01/18 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js