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 相关文章推荐
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
JavaScript数组前面插入元素的方法
Apr 06 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
Jan 26 Javascript
JS实现动态生成表格并提交表格数据向后端
Nov 25 Javascript
详解JavaScript中|单竖杠运算符的使用方法
May 23 Javascript
基于JS实现仿百度百家主页的轮播图效果
Mar 06 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
Aug 31 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
JS画布动态实现黑客帝国背景效果
Nov 08 Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 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
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
ECMAScript 基础知识
2007/06/29 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
JavaScript制作淘宝星级评分效果的思路
2020/06/23 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
python实现探测socket和web服务示例
2014/03/28 Python
python查询sqlite数据表的方法
2015/05/08 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Django ORM多对多查询方法(自定义第三张表&ManyToManyField)
2019/08/09 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
业务员岗位职责
2013/11/16 职场文书
法律专业自荐信
2014/06/03 职场文书
企业整改报告范文
2014/11/08 职场文书
2014年招生工作总结
2014/11/26 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
国庆节新闻稿
2015/07/17 职场文书
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android
Beekeeper Studio开源数据库管理工具比Navicat更炫酷
2022/06/21 数据库