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的几种方法小结
Apr 25 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
Nov 23 Javascript
Javascript的表单验证长度
Mar 16 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
Dec 29 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
Mar 19 Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 Javascript
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
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
使用sockets:从新闻组中获取文章(三)
2006/10/09 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
php通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
微信小程序时间戳转日期的详解
2019/04/30 Javascript
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python 占位符的使用方法详解
2019/07/10 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
人事主管岗位职责范本
2013/12/04 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
HR求职自荐信范文
2014/06/21 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
交通志愿者活动总结
2014/06/27 职场文书
停课通知书
2015/04/24 职场文书
重阳节主题班会
2015/08/17 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android