Ir para conteúdo

POWERED BY:

Arquivado

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

ederson_mello

Formato de moeda

Recommended Posts

Salve salve galera do imasters.

 

Estamos aqui novamente com mais uma dúvida cruel.

 

Estou utilizando um formulário no qual o cliente cadastra a quantidade dos produtos, o valor unitário de cada um. O javascript calcula o total de cada produto e calcula o valor total do pedido sem problemas...Porém,(sempre tem um porém) se eu colocar como quantidade do produto o nº 10, por exemplo, e o valor unitário como 3,2565 ele retorna o valor 30 e não 32,5650 como deveria. Alguém saberia me explicar por que e como mudar isto?

 

Desde já agradeço a atenção dos colegas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente você deve estar utilizando o "parseInt".. utilize o "parseFloat"..

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, nesse caso normalmente eu uso Math.ceil(), fica +/- assim

var valor=32.5650;
valor = Math.ceil(valor*100)/100;
Explico:

multiplico por 100 para "salvar" as casas decimais,

depois o ceil() arredonda para o proximo inteiro maior que o numero

e por ultimo divido por 100 para "recuperar" as casas decimais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, nesse caso normalmente eu uso Math.ceil(), fica +/- assim

var valor=32.5650;
valor = Math.ceil(valor*100)/100;
Explico:

multiplico por 100 para "salvar" as casas decimais,

depois o ceil() arredonda para o proximo inteiro maior que o numero

e por ultimo divido por 100 para "recuperar" as casas decimais

 

Cara valeu pela força. Só tem um porém. Deu certo mas com uma casa decimal somente. Tipo se for 360,60 ele fica 360,6. Lógico que isso não vai dar problemas na soma mas visualmente ficaria mais legal.

 

Não querendo me aproveitar, mas já me aproveitando. Tem como eu fazer ele formatar automático. Não no total mas quando o usuário digita? Tipo assim. O cara quer digitar o valor 5498 e a caixa de texto já transforma em 5.498,00?

 

Já te agradeço pela ajuda. Valeu mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com um problema parecido, então vou postar a solução que achei para a formatação, e espero que alguem possa "juntar" os códigos para nós.

Essa função mascara em moeda, enqnto o usuário está digitando:

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
	var sep = 0;
	var key = '';
	var i = j = 0;
	var len = len2 = 0;
	var strCheck = '0123456789';
	var aux = aux2 = '';
	var whichCode = (window.Event) ? e.which : e.keyCode;
	if (whichCode == 13) return true;
	key = String.fromCharCode(whichCode); // Valor para o código da Chave
	if (strCheck.indexOf(key) == -1) return false; // Chave inválida
	len = objTextBox.value.length;
	for(i = 0; i < len; i++)
		if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
	aux = '';
	for(; i < len; i++)
		if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
	aux += key;
	len = aux.length;
	if (len == 0) objTextBox.value = '';
	if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
	if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
	if (len > 2) {
		aux2 = '';
		for (j = 0, i = len - 3; i >= 0; i--) {
			if (j == 3) {
				aux2 += SeparadorMilesimo;
				j = 0;
			}
			aux2 += aux.charAt(i);
			j++;
		}
		objTextBox.value = '';
		len2 = aux2.length;
		for (i = len2 - 1; i >= 0; i--)
		objTextBox.value += aux2.charAt(i);
		objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
	}
	return false;
	}
E depois você referencia ela no input da seguinte forma:

onkeypress="return(MascaraMoeda(this,'','.',event))"
Tb sou novato em JS.. vou comprar alguns livros assim que receber desse ultimo trabalho ..

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.