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 相关文章推荐
node.js不得不说的12点内容
Jul 14 Javascript
提交按钮的name='submit'引起的js失效问题及原因
Feb 25 Javascript
javascript关于继承解析
May 10 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
如何制作一个Node命令行图像识别工具
Dec 12 Javascript
vuex如何重置所有state(可定制)
Jan 17 Javascript
uni-app之APP和小程序微信授权方法
May 09 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 21 Javascript
vue移动端写的拖拽功能示例代码
Sep 09 Javascript
jquery实现图片放大镜效果
Dec 23 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
一个PHP+MSSQL分页的例子
2006/10/09 PHP
PHP 日期时间函数的高级应用技巧
2009/10/10 PHP
phpexcel导入excel数据使用方法实例
2013/12/24 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
[JS]点出统计器
2020/10/11 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
Python类的多重继承问题深入分析
2014/11/09 Python
python字典操作实例详解
2017/11/16 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
jupyter 导入csv文件方式
2020/04/21 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
总账会计岗位职责
2015/04/02 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
医院党建工作总结2015
2015/05/26 职场文书
送给火锅店的创意营销方案!
2019/07/08 职场文书
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript