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 相关文章推荐
javascript 动态加载 css 方法总结
Jul 11 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
微信小程序使用Promise简化回调
Feb 06 Javascript
Webpack中雪碧图插件使用详解
May 25 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
node.JS路径解析之PATH模块使用方法详解
Feb 06 Javascript
vue-router为激活的路由设置样式操作
Jul 18 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 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数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP UTF8中文字符截断函数代码
2012/09/11 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
2012/10/12 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
javascript中this指向详解
2016/04/23 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python在指定目录下查找gif文件的方法
2015/05/04 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
python根据时间获取周数代码实例
2019/09/30 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
python实现批量修改文件名
2020/03/23 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
华三通信H3C面试题
2015/05/15 面试题
程序员岗位职责
2013/11/11 职场文书
党员思想汇报范文
2013/12/30 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
学术会议邀请函
2015/01/30 职场文书
个人工作违纪检讨书
2015/05/05 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书
java开发双人五子棋游戏
2022/05/06 Java/Android