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的伪弹出框实现代码
Sep 08 Javascript
jquery 日期控件datepicker属性详细解析
Nov 08 Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
Jun 06 Javascript
Angular.js跨controller实现参数传递的两种方法
Feb 20 Javascript
JavaScript中的遍历详解(多种遍历)
Apr 07 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
微信小程序返回多级页面的实现方法
Oct 27 Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 jQuery
vue.js购物车添加商品组件的方法
Sep 17 Javascript
webpack常用配置总览(小结)
Nov 18 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/30 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
PHP中list方法用法示例
2016/12/01 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
几个Linux面试题笔试题
2016/08/01 面试题
《狮子和兔子》教学反思
2014/03/02 职场文书
土地租赁意向书
2014/07/30 职场文书
班级团队活动方案
2014/08/14 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
班级管理经验交流材料
2015/11/02 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
Win2008系统搭建DHCP服务器
2022/06/25 Servers
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL