Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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>Carregando comentários...