Ir para conteúdo

Arquivado

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

tuhajo

Problema ao somar centavos

Recommended Posts

Olá, Boa Tarde,

 

Pessoal, estou com dificuldade para somar os centavos quando o resultado passa para milhar.

Se eu somo 100,50 + 100,75, ele retorna 201,25 (está correto) mas se eu somo 1200,60 + 1600, ele retorna 2.8

 

Já tentei de tudo e não consigo resolver esse problema.

 

Segue abaixo o meu código:

<script>function mascara_num(obj) {valida_num(obj)if (obj.value.match("-")) {mod = "-";} else {mod = "";}valor = obj.value.replace("-", "");valor = valor.replace(",", ""); if (valor.length >= 3) {valor = poe_ponto_num(valor.substring(0, valor.length - 2)) + "." + valor.substring(valor.length - 2, valor.length);}obj.value = mod + valor;}function poe_ponto_num(valor) {valor = valor.replace(/\./g, "");if (valor.length > 3) {valores = "";while (valor.length > 3) {valores = "." + valor.substring(valor.length - 3, valor.length) + "" + valores;valor = valor.substring(0, valor.length - 3);}return valor + "" + valores;} else {return valor;}}function valida_num(obj) {numeros = new RegExp("[0-9]");while (!obj.value.charAt(obj.value.length - 1).match(numeros)) {if (obj.value.length == 1 && obj.value == "-") {return true;}if (obj.value.length >= 1) {obj.value = obj.value.substring(0, obj.value.length - 1)} else {return false;}}}function Calcular() {var saldo_inicial = (document.frmFlash.saldo_inicial.value.replace(",", "."));var saldo_inicial_sel = (document.frmFlash.saldo_inicial_sel.value.replace(",", "."));var soma = parseFloat(saldo_inicial) + parseFloat(saldo_inicial_sel);frmFlash.saldo_inicial_cons.value = soma;}</script>  <tr><td bgcolor="#000099" align="left" width="200"><font color="white"><b>Saldo Inicial</b></font></td><td bgcolor="#000099" align="center" width="150" colspan="2"><input type="text" name="saldo_inicial" size="12" class="Linhas" onkeyup="mascara_num(this);"></td><td bgcolor="#000099" align="center" width="150" colspan="2"><input type="text" name="saldo_inicial_sel" size="12" class="Linhas" onkeyup="mascara_num(this);" onblur="javascript:Calcular();"></td><td bgcolor="#000099" align="center" width="150" colspan="2"><input type="text" name="saldo_inicial_cons" size="12" class="Linhas" readonly></td></tr>

 

 

Alguém pode me ajudar!!!

Preciso saber como faço para o resultado da soma 1200,60 + 1600, retornar 2.800,60, ao invés de retornar 2.8.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A máscara do campo já vai preenchendo com os zeros, por isso não consigo fazer dessa maneira.

Na verdade, ele está se perdendo na soma quando passa de 1000,00. Fiz um teste agora com os valores 1.500.00 + 260.00 e ele retornou 261.5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, mas js entende o ponto como virgula. Você vai ter que tratar esses números antes de fazer a soma, entende?

1.500.00 teria que ficar 1500.00

Entendeu? Só usa o ponto pra separar as casas decimais.

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.