首页 > 编程 > JavaScript > 正文

js数字计算 误差问题的快速解决方法

2019-11-19 17:24:02
字体:
来源:转载
供稿:网友

实例如下:

//加法函数,用来得到精确的加法结果 //说明: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数字计算 误差问题的快速解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表