Ir para conteúdo

POWERED BY:

Arquivado

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

weslei.conexao

Não consigo somar valor decimal

Recommended Posts

Olá amigos, to tentando somar valor numerico em caixa de texto mas não consigo, tenho uma função que faz a soma só que não faz a soma do decimal seu eu colocar num campo 10,50 e no outro campo 15,30 no campo total aparece 25.00 e não 25,80 como deveria. O que euto fazendo de errado.Abaixo a função que calcula.

function calcular(operacao)
{
var txtValorDesp1= parseInt( document.form1.txtValorDesp1.value == "" ? 0 : document.form1.txtValorDesp1.value);
var txtValorDesp2= parseInt(document.form1.txtValorDesp1.value == "" ? 0 : document.form1.txtValorDesp2.value);
var txtValorDesp3= parseInt(document.form1.txtValorDesp3.value == "" ? 0 : document.form1.txtValorDesp3.value);
var total= parseInt(eval(txtValorDesp1 + operacao + txtValorDesp2 + operacao + txtValorDesp3));
document.form1.vtotal.value=(total.toFixed(2));

}
</script>

Desde já agradeço a ajuda!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Penso que o problema esteja no parseInt. Ao invés de o usar utilize parseFloat.

Não tenho certeza se vai funcionar.. Não testei.

 

Cumps \o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vale lembrar que o sistema americano decimal usa o PONTO como separador, e não a vírgula...

portanto é

10.50 + 15.30 = 25.80

para o usuário entrar com vírgulas, você vai ter que fazer um tratamento, para substituir as virgulas dele por pontos, e depois da soma, retornar às virgulas..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está usando o parseFloat?

retire o .toFixed(2) dali... e coloque on line para que analizemos melhor...

 

Uma das coisas que vi fazerem, é multiplicar por 100 para salvar os decimais, e depois da conta dividir por 100.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se este script te serve

<script language="javascript">

 

var nItens = 2;

 

function recalculaTotais (frm)

{

var total = 0;

for (var i = 0; i < nItens; i++)

{

frm.total.value = Math.round(frm.preco.value * frm.quant.value * 100) / 100;

total += parseFloat(frm.total.value);

}

frm.totalgeral.value = total;

}

</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.