Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vitorlouzada

Erro na Subtração

Recommended Posts

Boa Tarde, eu utilizo o código abaixo para realização de calculos no meu sistema e o outro código para converter o número de formato brasileiro para americano e vice-versa...

 

porém em alguns calculos o resultado retorna com 0,01 a menos do que deveria retornar... se por exemplo calculo 100,05 - 100,02 ele retorna como resultado: 0,02 e não 0,03... já em alguns casos, faz o calculo corretamente.

 

Alguem sabe como corrigir esse problema?

 

Segue abaixo os códigos:

 

<script language="javascript">   
		function calculo_saldo()   
		{   
			var text1 = parseFloat(numBrToUsa(document.getElementById("total").value));
			var text2 = parseFloat(numBrToUsa(document.getElementById("total2").value));	  
			document.getElementById("saldo").value = FormataNumero(numUsaToBr((text1 - text2)),2);   
		}   
	</script>	
	<script language='JavaScript'>
   function Calcula()
	  {
	  var total=0;
	  for (var x=1;x<table1.rows.length;x++)
		 total+= parseFloat(numBrToUsa(document.frm.elements['valor['+x+']'].value));
	  document.frm.all['total'].innerHTML='<b>Total: R$ '+FormataNumero(numUsaToBr(total),2)+'</b>';
	  }

   // Função para mascara de números (padrão brasileiro), porém pode-se escolher quantas casas decimais
   // param3 = número de casas decimais
   function MascaraNumero(param1,param2,param3)
	  {
	  tecla = String.fromCharCode(param2);
	  if (param1.value.indexOf(',')>0)
		 {
		 casas=param1.value.split(",");
		 if (casas[1].length>param3)
			{
			event.returnValue = false;
			return;
			}
		 }
	  if (tecla>=0 && tecla<=9)
		 event.returnValue = true;
	  else if (tecla=="," && param1.value.indexOf(',')==-1 && param1.value.length>0 && param3>0)
		 event.returnValue = true;
	  else
		 event.returnValue = false;
	  }

   // Função para formatar um número colocando separador de milhar e o número de casas decimais.
   // A função não verifica se o parametro numero é mesmo um número. numero deve estar no padrão brasileiro.
   function FormataNumero(numero,casas)
	  {
	  negativo=false;
	  if (numBrToUsa(numero)<0)
		 {
		 negativo=true;
		 numero=numero.replace("-","");
		 }	 
	  if (numero=="" || numero=="0")
		 return "0,00";
	  numero=numero.replace(".","");
	  if (numero.indexOf(',')==-1)
		 numero+= ",00";
	  num=numero.split(",");
	  aux="";
	  y=1;
	  for (x=num[0].length;x>0;x--)
		 {
		 aux+= num[0].substr(x-1,1);
		 if (y%3==0 && x>1)
			aux+=".";
		 y++;
		 }
	  ret="";
	  for (x=aux.length;x>0;x--)
		 ret+= aux.substr(x-1,1);
	  if (casas>0)
		 ret+=",";
	  if (num[1].length>=casas)
		 len=casas
	  else
		 len=num[1].length;
	  for (x=0;x<len;x++)
		 ret+= num[1].substr(x,1);
	  for (y=x;y<casas;y++)
		 ret+= "0";
	  if (negativo)
		 ret="-"+ret;
	  return ret;
	  }

	// Função para converter um número do padrão brasileiro para o padrão americano
	function numBrToUsa(numero)
	   {
	   if (numero=="")
		  return "0.00";
	   aux=numero.replace(".","");
	   return parseFloat(aux.replace(",","."));
	   }

	// Função para converter um número do padrão americano para o padrão brasileiro
	function numUsaToBr(numero)
	   {
	   if (numero=="")
		  return "0,00";
	   numero=numero.toString();
	   if (numero.indexOf('.')==-1)
		  numero+= ".00";
	   return numero.replace(".",",");
	   }
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.