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 相关文章推荐
innerHTML,outerHTML,innerTEXT三者之间的区别
Jan 28 Javascript
理解Javascript_07_理解instanceof实现原理
Oct 15 Javascript
JavaScript每天必学之数组和对象部分
Sep 17 Javascript
AngularJS Select(选择框)使用详解
Jan 18 Javascript
Bootstrap Table使用整理(三)
Jun 09 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
jQuery层级选择器_动力节点节点Java学院整理
Jul 04 jQuery
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
浅析Vue.js 中的条件渲染指令
Nov 19 Javascript
express express-session的使用小结
Dec 12 Javascript
js prototype和__proto__的关系是什么
Aug 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
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
简单的php 验证图片生成函数
2009/05/21 PHP
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php分页代码学习示例分享
2014/02/20 PHP
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
jQuery height()、innerHeight()、outerHeight()函数的区别详解
2016/05/23 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
vue实现图片上传功能
2020/05/28 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
简单实现Python爬取网络图片
2018/04/01 Python
详解python里的命名规范
2018/07/16 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
2019/04/26 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
Linux管理员面试经常问道的相关命令
2014/12/12 面试题
道路交通安全实施方案
2014/03/12 职场文书
村委会贫困证明范文
2014/09/21 职场文书
毕业横幅标语
2014/10/08 职场文书
思想品德评语大全
2014/12/31 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
共青团员自我评价
2015/03/10 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python