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自动判断浏览器分辨率的代码
Jan 28 Javascript
js玩一玩WSH吧
Feb 23 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
jQuery将表单序列化成一个Object对象的实例
Nov 29 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
Vue 组件间的样式冲突污染
Aug 31 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
详解Vue快速零配置的打包工具——parcel
Jan 16 Javascript
详解如何webpack使用DllPlugin
Sep 30 Javascript
javascript数据类型中的一些小知识点(推荐)
Apr 18 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 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 团购折扣计算公式
2011/11/24 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
JavaScript中常见陷阱小结
2010/04/27 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
jQuery实现带滑动条的菜单效果代码
2015/08/26 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
全面解析JS字符串和正则表达式中的match、replace、exec等函数
2016/07/01 Javascript
JS中substring与substr的用法
2016/11/16 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
讲解Python中运算符使用时的优先级
2015/05/14 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
Python3+Selenium+Chrome实现自动填写WPS表单
2020/02/12 Python
详解Python中import机制
2020/09/11 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
Html5 web本地存储实例详解
2016/07/28 HTML / CSS
艺术用品:Arteza
2018/11/25 全球购物
职业生涯规划书基本格式
2014/01/06 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
公司开业庆典主持词
2014/03/21 职场文书
公司新年寄语
2014/04/04 职场文书
中学生学习保证书
2015/02/26 职场文书
开学典礼观后感
2015/06/15 职场文书
自书遗嘱范文
2015/08/07 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
jquery插件实现代码雨特效
2021/04/24 jQuery
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL