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 相关文章推荐
参考:关于Javascript中实现暂停的几篇文章
Mar 04 Javascript
类之Prototype.js学习
Jun 13 Javascript
js 中将多个逗号替换为一个逗号的代码
Jun 07 Javascript
介绍JavaScript的一个微型模版
Jun 24 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
JavaScript Promise 用法
Jun 14 Javascript
JavaScript SHA512加密算法详细代码
Oct 06 Javascript
动态加载、移除js/css文件的示例代码
Mar 20 Javascript
微信小程序之onLaunch与onload异步问题详解
Mar 28 Javascript
elementUI多选框反选的实现代码
Apr 03 Javascript
详解Node.JS模块 process
Aug 31 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
PHP 读取文件的正确方法
2009/04/29 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP文件读写操作相关函数总结
2014/11/18 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
Jquery:ajax实现翻页无刷新功能代码
2013/08/05 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
JS加密插件CryptoJS实现的DES加密示例
2018/08/16 Javascript
vue实现局部刷新的实现示例
2019/04/16 Javascript
vue 地区选择器v-distpicker的常用功能
2019/07/23 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
python实现的希尔排序算法实例
2015/07/01 Python
详解如何使用Python编写vim插件
2017/11/28 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python基础 range的用法解析
2019/08/23 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python TCP通信客户端服务端代码实例
2019/11/21 Python
Python高级特性——详解多维数组切片(Slice)
2019/11/26 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
自我鉴定200字
2013/10/28 职场文书
家居设计专业个人自荐信范文
2013/11/26 职场文书
公司晚会策划方案
2014/05/17 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
Python+Appium新手教程
2021/04/17 Python
Python djanjo之csrf防跨站攻击实验过程
2021/05/14 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers