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 相关文章推荐
DB.ASP 用Javascript写ASP很灵活很好用很easy
Jul 31 Javascript
JavaScript 用Node.js写Shell脚本[译]
Sep 20 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
Dec 10 Javascript
纯javascript响应式树形菜单效果
Nov 10 Javascript
JS表单验证的代码(常用)
Apr 08 Javascript
JavaScript暂停和继续定时器的实现方法
Jul 18 Javascript
微信开发 微信授权详解
Oct 21 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
js实现飞机大战游戏
Aug 26 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
Dec 14 Vue.js
Javascript中的解构赋值语法详解
Apr 02 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+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
php设计模式之单例模式代码
2016/06/11 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
python验证码识别实例代码
2018/02/03 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
Python实现异步IO的示例
2020/11/05 Python
利用python爬取有道词典的方法
2020/12/08 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
HEMA英国:荷兰原创设计
2018/08/28 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
英文版餐饮运营管理求职信
2013/11/06 职场文书
暑期教师培训方案
2014/06/07 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android