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实现运行代码需要刷新的解决方法
Aug 18 Javascript
javascript下操作css的float属性的特殊写法
Aug 22 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
Feb 15 Javascript
react-native中ListView组件点击跳转的方法示例
Sep 30 Javascript
jQuery动态移除与增加onclick属性的方法详解
Jun 07 jQuery
webpack多入口多出口的实现方法
Aug 17 Javascript
在微信小程序中渲染HTML内容的方法示例
Sep 28 Javascript
angularjs通过过滤器返回超链接的方法
Oct 26 Javascript
JS数组求和的常用方法总结【5种方法】
Jan 14 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 20 Javascript
JavaScript如何实现元素全排列实例代码
May 14 Javascript
React配置子路由的实现
Jun 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
PHP书写格式详解(必看)
2016/05/23 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JavaScript比较当前时间是否在指定时间段内的方法
2016/08/02 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
JS正则表达式验证密码强度
2020/03/18 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python3 kmp 字符串匹配的方法
2018/07/07 Python
Python实现带参数的用户验证功能装饰器示例
2018/12/14 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python bisect模块原理及常见实例
2020/06/17 Python
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
入党自我鉴定范文
2013/10/04 职场文书
高中学校对照检查材料
2014/08/31 职场文书
优秀团员个人总结
2015/02/26 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
公司催款律师函
2015/05/27 职场文书
教师读书笔记
2015/06/29 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
奇妙的 CSS shapes(CSS图形)
2021/04/05 HTML / CSS
Django程序的优化技巧
2021/04/29 Python
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android