js 中的小数计算误差问题

在js中,带小数的数据相加或相乘时总会出现好多位小数.这是因为在js中浮点数的计算是以2进制算的,

解决方法一般是将小数化成整数后再作除法。

加法和减法示例:

function addValue(value1,value2){
	if(value1=="")value1="0";
	if(value2=="")value2="0";
	var temp1=0;
	var temp2=0;
	if(value1.indexOf(".")!=-1)
	 temp1=value1.length - value1.indexOf(".")-1;
	if(value2.indexOf(".")!=-1)
	 temp2=value2.length - value2.indexOf(".")-1; 
	
	var temp=0;
	
	if(temp1>temp2)
	temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp1);
	else
	temp = (parseFloat(value1)+parseFloat(value2)).toFixed(temp2); 
	
	return temp;
  
}

function subValue(value1,value2){
 	if(value1 == "") value1="0";
	if(value2 == "") value2="0";
	var temp1 = 0;
	var temp2 = 0;
	if(value1.indexOf(".") != -1)
	 temp1 = value1.length - value1.indexOf(".")-1;
	if(value2.indexOf(".") != -1)
	 temp2 = value2.length - value2.indexOf(".")-1; 
	
	var temp=0;
	
	if(temp1 > temp2)
	temp = (parseFloat(value1) - parseFloat(value2)).toFixed(temp1);
	else
	  temp = (parseFloat(value1)- parseFloat(value2)).toFixed(temp2); 
	
	return temp;
	
}

 

你可能感兴趣的:(js)