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 相关文章推荐
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
Feb 03 Javascript
addEventListener和attachEvent二者绑定的执行函数中的this不相同
Dec 09 Javascript
Javascript简单实现可拖动的div
Oct 22 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
javascript中 try catch用法
Aug 16 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
Jun 15 Javascript
js控制li的隐藏和显示实例代码
Oct 15 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
Nov 24 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
vue-cli项目中使用Mockjs详解
May 14 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 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 json相关函数用法示例
2017/03/28 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
2015/08/21 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
Python的print用法示例
2014/02/11 Python
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
Python数据库小程序源代码
2019/09/15 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
Python 过滤错误log并导出的实例
2019/12/26 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
利用python实现汉诺塔游戏
2021/03/01 Python
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
大学毕业感言50字
2014/02/07 职场文书
班组长竞聘书
2014/03/31 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
道歉的话怎么说
2015/05/12 职场文书
家电创业计划书
2019/08/05 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
mysql中整数数据类型tinyint详解
2021/12/06 MySQL
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技