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编程起步(第七课)
Jan 10 Javascript
读jQuery之一(对象的组成)
Jun 11 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
一个封装js代码-----展开收起效果示例
Jul 03 Javascript
JavaScript自定义事件介绍
Aug 29 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
javascript清空table表格的方法
May 14 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
Sep 19 Javascript
javascript匀速动画和缓冲动画详解
Oct 20 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 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
Search Engine Friendly的URL设计
2006/10/09 PHP
操作Oracle的php类
2006/10/09 PHP
php安全之直接用$获取值而不$_GET 字符转义
2012/06/03 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
初学prototype,发个JS接受URL参数的代码
2006/09/25 Javascript
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
javascript解析json数据的3种方式
2014/05/08 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
jQuery插件passwordStrength密码强度指标详解
2016/06/24 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
JS实现可控制的进度条
2020/03/25 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
你真的了解Python的random模块吗?
2017/12/12 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
python有几个版本
2020/06/17 Python
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
《都江堰》教学反思
2014/02/07 职场文书
自立自强的名人事例
2014/02/10 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
php png失真的原因及解决办法
2021/11/17 PHP
mysql数据插入覆盖和时间戳的问题及解决
2022/03/25 MySQL
Python安装使用Scrapy框架
2022/04/12 Python