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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
使用apply方法处理数组的三个技巧[译]
Sep 20 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
Feb 12 Javascript
Javascript中innerHTML用法实例分析
Jan 12 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
jQuery获取当前点击的对象元素(实现代码)
May 19 Javascript
JS实现回到页面顶部动画效果的简单实例
May 24 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
vue+elementUI实现简单日历功能
Sep 24 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
星际RPG字典
2020/03/04 星际争霸
php中取得URL的根域名的代码
2011/03/23 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
2012/04/19 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
jQuery基于ajax实现星星评论代码
2015/08/07 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
JS常用知识点整理
2017/01/21 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
JavaScript canvas动画实现时钟效果
2020/02/10 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Python切图九宫格的实现方法
2019/10/10 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
庆七一宣传标语
2014/10/08 职场文书
党支部四风整改方案
2014/10/25 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
病假证明模板
2015/06/19 职场文书
PyTorch的Debug指南
2021/05/07 Python
nginx部署多前端项目的几种方法
2021/05/25 Servers
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技