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 相关文章推荐
JS 文件大小判断的实现代码
Apr 07 Javascript
DIV始终居中的js代码
Feb 17 Javascript
JS实现的数组全排列输出算法
Mar 19 Javascript
jQuery实现图片局部放大镜效果
Mar 17 Javascript
jQuery使用each方法与for语句遍历数组示例
Jun 16 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
Oct 16 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
qrcode生成二维码微信长按无法识别问题的解决
Apr 04 Javascript
vuex actions异步修改状态的实例详解
Nov 06 Javascript
原生JS实现pc端轮播图效果
Dec 21 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
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
javascript 函数调用规则
2009/08/26 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
jQuery中:empty选择器用法实例
2014/12/30 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
vue如何使用async、await实现同步请求
2019/12/09 Javascript
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
python定时检测无响应进程并重启的实例代码
2019/04/22 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python二进制文件的转译详解
2019/07/03 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
自荐信封面
2013/12/04 职场文书
2014年幼儿园元旦活动方案
2014/02/13 职场文书
感恩的演讲稿
2014/05/06 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python