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限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
可自己添加html的伪弹出框实现代码
Sep 08 Javascript
js实现的复制兼容chrome和IE
Apr 03 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
论Bootstrap3和Foundation5网格系统的异同
May 16 Javascript
Node.js DES加密的简单实现
Jul 07 Javascript
jQuery接受后台传递的List的实例详解
Aug 02 jQuery
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
vue-cli项目代理proxyTable配置exclude的方法
Sep 20 Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
Jan 03 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
JS使用ajax方法获取指定url的head信息中指定字段值的方法
2015/03/24 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
python转换摩斯密码示例
2014/02/16 Python
Python实现基于权重的随机数2种方法
2015/04/28 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
Python是什么 Python的用处
2020/05/26 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
环保标语大全
2014/06/12 职场文书
高中美术教师事迹材料
2014/08/22 职场文书
诉讼授权委托书范本
2014/10/05 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书