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 相关文章推荐
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 Javascript
详解js闭包
Sep 02 Javascript
javascript编写实用的省市选择器
Feb 12 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
jQuery蓝色风格滑动导航栏代码分享
Aug 19 Javascript
酷! 不同风格页面布局幻灯片特效js实现
Feb 19 Javascript
js变量提升深入理解
Sep 16 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
fullPage.js和CSS3实现全屏滚动效果
May 05 Javascript
vue 将页面公用的头部组件化的方法
Dec 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简单统计字符串单词数量的方法
2015/06/19 PHP
php递归函数三种实现方法及如何实现数字累加
2015/08/07 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
Javascript typeof 用法
2008/12/28 Javascript
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
基于js 各种排序方法和sort方法的区别(详解)
2018/01/03 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
基于JS实现快速读取TXT文件
2020/08/25 Javascript
js实现随机点名功能
2020/12/23 Javascript
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
对python中Librosa的mfcc步骤详解
2019/01/09 Python
Python Web版语音合成实例详解
2019/07/16 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
高中生操行评语
2014/04/25 职场文书
安全保证书范文
2014/04/29 职场文书
小学语文业务学习材料
2014/06/02 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
冰峪沟导游词
2015/02/09 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
详解CSS3浏览器兼容
2022/12/24 HTML / CSS