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 相关文章推荐
通过身份证号得到出生日期和性别的js代码
Nov 23 Javascript
关于document.cookie的使用javascript
Oct 29 Javascript
判断文档离浏览器顶部的距离的方法
Jan 08 Javascript
jQuery遍历Table应用示例
Apr 09 Javascript
JavaScript中常用的六种互动方法示例
Mar 13 Javascript
JavaScript实现数据类型的相互转换
Mar 06 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
Vue.js 插件开发详解
Mar 29 Javascript
浅谈react 同构之样式直出
Nov 07 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
vue后台管理之动态加载路由的方法
Aug 13 Javascript
JS替换字符串中指定位置的字符(多种方法)
May 28 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
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
Angular中支持SCSS的方法
2017/11/18 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
python实现ip查询示例
2014/03/26 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python Requests安装与简单运用
2016/04/07 Python
Python利用IPython提高开发效率
2016/08/10 Python
Python字典简介以及用法详解
2016/11/15 Python
Python3中使用PyMongo的方法详解
2017/07/28 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
python中p-value的实现方式
2019/12/16 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
python 连续不等式语法糖实例
2020/04/15 Python
Python 如何对文件目录操作
2020/07/10 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
体育纪念品、亲笔签名的体育收藏品:Steiner Sports
2020/07/31 全球购物
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
中医专业职业生涯规划书范文
2014/01/04 职场文书
初一新生军训方案
2014/05/22 职场文书
小学生作文批改评语
2014/12/25 职场文书