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 相关文章推荐
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
Nov 01 Javascript
js获取当前周、上一周、下一周日期
Mar 19 Javascript
jsTree事件和交互以及插件plugins详解
Aug 29 Javascript
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
Sep 14 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
vue实现鼠标经过动画
Oct 16 Javascript
在Vue中使用antv的示例代码
Jun 29 Javascript
javascript实现京东登录显示隐藏密码
Aug 02 Javascript
swiper实现导航滚动效果
Dec 13 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下通过curl抓取yahoo boss 搜索结果的实现代码
2011/06/10 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
小程序实现自定义导航栏适配完美版
2019/04/02 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
js比较两个单独的数组或对象是否相等的实例代码
2019/04/28 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
Vue实现todo应用的示例
2021/02/20 Vue.js
Python遍历目录的4种方法实例介绍
2015/04/13 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
python实现超市扫码仪计费
2018/05/30 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
简单介绍django提供的加密算法
2019/12/18 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
pycharm 的Structure界面设置操作
2021/02/05 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
关于工作经历的证明书
2014/10/11 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android