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 相关文章推荐
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
js实现的折叠导航示例
Nov 29 Javascript
jQuery控制TR显示隐藏的几种方法
Jun 18 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 Javascript
angular-cli修改端口号【angular2】
Apr 19 Javascript
JS实现unicode和UTF-8之间的互相转换互转
Jul 05 Javascript
微信小程序之页面跳转和参数传递的实现
Sep 29 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
Dec 18 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
前端实现滑动按钮AJAX与后端交互的示例代码
Feb 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
php支付宝在线支付接口开发教程
2016/09/19 PHP
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
2015/09/09 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
2017/02/14 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
Python性能优化技巧
2015/03/09 Python
python使用多线程不断刷新网页的方法
2015/03/31 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
C语言50道问题
2014/10/23 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
在人间读书笔记
2015/06/30 职场文书
《比的意义》教学反思
2016/02/18 职场文书
MySQL 发生同步延迟时Seconds_Behind_Master还为0的原因
2021/06/21 MySQL
Python 语言实现六大查找算法
2021/06/30 Python
什么是Python装饰器?如何定义和使用?
2022/04/11 Python
python中使用redis用法详解
2022/12/24 Redis