js数字计算 误差问题的快速解决方法


Posted in Javascript onFebruary 28, 2017

实例如下:

//加法函数,用来得到精确的加法结果 

//说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。 

//调用:accAdd(arg1,arg2) 

//返回值:arg1加上arg2的精确结果 

function add(a,b){ 
	var c, d, e;
  try {
    c = a.toString().split(".")[1].length;
  } catch (f) {
    c = 0;
  }
  try {
    d = b.toString().split(".")[1].length;
  } catch (f) {
    d = 0;
  }
  return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;

	} 
	//乘法函数,用来得到精确的乘法结果 
	//说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。 
	
	//调用:accMul(arg1,arg2) 
	
	//返回值:arg1乘以arg2的精确结果 
	
function mul(a, b) {
  var c = 0,
    d = a.toString(),
    e = b.toString();
  try {
    c += d.split(".")[1].length;
  } catch (f) {}
  try {
    c += e.split(".")[1].length;
  } catch (f) {}
  return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
}
	//减法函数,用来得到精确的减法结果 

	//说明:javascript的减法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的减法结果。 

	//调用:accSubtr(arg1,arg2) 

	//返回值:arg1减去arg2的精确结果 

	function sub(a,b){
		var c, d, e;
	  try {
	    c = a.toString().split(".")[1].length;
	  } catch (f) {
	    c = 0;
	  }
	  try {
	    d = b.toString().split(".")[1].length;
	  } catch (f) {
	    d = 0;
	  }
	  return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;

	}
	//除法函数,用来得到精确的除法结果 

	//说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。 

	//调用:accDiv(arg1,arg2) 

	//返回值:arg1除以arg2的精确结果 

	function div(a, b) {
	  var c, d, e = 0,
	    f = 0;
	  try {
	    e = a.toString().split(".")[1].length;
	  } catch (g) {}
	  try {
	    f = b.toString().split(".")[1].length;
	  } catch (g) {}
	  return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), mul(c / d, Math.pow(10, f - e));
}

以上这篇js数字计算 误差问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
优化网页之快速的呈现我们的网页
Jun 29 Javascript
JQuery 网站换肤功能实现代码
Nov 02 Javascript
jQuery插件 tabBox实现代码
Feb 09 Javascript
setTimeout的延时为0时多个浏览器的区别
May 23 Javascript
Javascript实现快速排序(Quicksort)的算法详解
Sep 06 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
巧用jQuery选择器提高写表单效率的方法
Aug 19 Javascript
AngularJS 霸道的过滤器小结
Apr 26 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
详解vue-cli下ESlint 配置说明
Sep 03 Javascript
vue框架中props的typescript用法详解
Feb 17 Javascript
Vue SSR 即时编译技术的实现
May 06 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 #Javascript
JS实现浏览器打印、打印预览示例
Feb 28 #Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 #Javascript
js中删除数组中的某一元素实例(无下标时)
Feb 28 #Javascript
jQuery图片切换动画效果
Feb 28 #Javascript
jQuery 判断元素整理汇总
Feb 28 #Javascript
jQuery倒计时代码(超简单)
Feb 27 #Javascript
You might like
php 获取远程网页内容的函数
2009/09/08 PHP
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
js闭包的用途详解
2014/11/09 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
使用python实现正则匹配检索远端FTP目录下的文件
2015/03/25 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python list转矩阵的实例讲解
2018/08/04 Python
学习python分支结构
2019/05/17 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
西尔斯百货官网:Sears
2016/09/06 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
摩飞电器俄罗斯官方网站:Morphy Richards俄罗斯
2020/07/30 全球购物
毕业生的自我评价
2013/12/30 职场文书
应聘英语教师求职信
2014/04/24 职场文书
比赛口号大全
2014/06/10 职场文书
2014年安全保卫工作总结
2014/11/13 职场文书
Redis延迟队列和分布式延迟队列的简答实现
2021/05/13 Redis
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android