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 相关文章推荐
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
Jquery 获得服务器控件值的方法小结
May 11 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
May 27 Javascript
读jQuery之一(对象的组成)
Jun 11 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
JavaScript中获取高度和宽度函数总结
Oct 08 Javascript
jQuery对象的length属性用法实例
Dec 27 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
浅析vue数据绑定
Jan 17 Javascript
浅析vue.js数组的变异方法
Jun 30 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代码(抓取网页中的邮箱地址)
2012/07/17 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
详解在Angular4中使用ng2-baidu-map的方法
2019/06/19 Javascript
python计算最大优先级队列实例
2013/12/18 Python
python根据经纬度计算距离示例
2014/02/16 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
python3调用R的示例代码
2018/02/23 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
公司活动邀请函
2014/01/24 职场文书
教师业务培训方案
2014/05/01 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
使用python创建股票的时间序列可视化分析
2022/03/03 Python