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 flash下fromCharCode和charCodeAt方法使用说明
Jan 12 Javascript
js或css实现滚动广告的几种方案
Jan 28 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
Sep 27 Javascript
老生常谈Javascript中的原型和this指针
Oct 09 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
Oct 08 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
微信js-sdk 录音功能的示例代码
Nov 01 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 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
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
非常实用的php弹出错误警告函数扩展性强
2014/01/17 PHP
php实现mysql封装类示例
2014/05/07 PHP
PHP更安全的密码加密机制Bcrypt详解
2017/06/18 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
简单封装js的dom查询实例代码
2016/07/08 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
vue-cli配置flexible过程详解
2019/07/04 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
对Python强大的可变参数传递机制详解
2019/06/13 Python
基于Python函数和变量名解析
2019/07/19 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
Viking比利时:购买办公用品
2019/10/30 全球购物
法学专业应届生求职信
2013/10/16 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
给领导的感谢信范文
2015/01/23 职场文书
行政复议答复书
2015/07/01 职场文书