AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > JavaScript

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

51自学网 http://www.wanshiok.com
js计算误差

实例如下:

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


js计算误差  
上一篇:jQuery树控件zTree使用方法详解(一)  下一篇:js数字舍入误差以及解决方法(必看篇)