nov 5 2008

Somando Strings em Javascript

  • Autor: IphoneVicious em javascript
  • 1 Comentário
Graças ao grande Elieder, ele formulou para a galerinha um scriptzinho em javascript bem explicativo, ensinando como realizar a soma de strings, mas aí você me pergunta qual a graça de somar strings em javascript? Resposta: A graça nisso é que a maioria das linguagens só fazem contas até um certo valor, depois de certas casas decimais ele arredonda o valor, como:

javascript:alert(111111111111111111111111111111111111 + 111111111111111111111111111111111111);

Irá resultar em, na forma de notação cientifíca:
2.22222222222222e+35

A única maneira de não acontecer isso  é se você for fazer a conta, representado os números como strings, logo a linguagem não irá interferir. Um caso em potencial para isso é a realização de equações com números de alto grau numérico.

?View Code JAVASCRIPT
// OS NÚMEROS FICAM AQUI (V[0] E V[1])
v = ["909","92"];
 
// CRIO 3 VARIÁVEIS COMO STRINGS (ELAS AJUDARÃO A GUARDAR VALORES)
c = d = r = "";
 
// RETORNA O TAMANHO DO 'OBJ'
function l(obj) {
	return obj.length;
}
 
// SE V[0] FOR MAIOR OU IGUAL A V[1], ELE RETORNA 1, SENÃO RETORNA 0
function mx(a,b) {
	if (l(a)>=l(b)) return 0;
	return 1;
}
 
// AQUI, EU PEGO O NÚMERO COM MAIS CASAS DECIMAIS (NO NOSSO CASO, V[0])
ma = v[mx(v[0],v[1])];
 
// AQUI, FICA O DE MENOS CASAS DECIMAIS (USEI O OPERADOR ^ (OR) PARA INVERTER O RESULTADO DA FUNÇÃO)
me = v[mx(v[0],v[1])^1];
 
// AQUI EU PEGO A QUANTIDADE DE CASAS DECIMAIS DO MAIOR VALOR (MA)
m = Math.max(l(v[0]), l(v[1]));
 
// E AQUI EU PEGO A DO MENOR VALOR (ME)
// PERCEBA QUE EU PODERIA TER FEITO O DE CIMA COM A MESMA SÍNTAXE QUE ESSE DE BAIXO...
k = l(me)-1;
 
// PARA CADA CARACTERE FORMADOR DO NÚMERO DE MAIOR CASAS DECIMAIS...
for(w=m-1;w>=0;w--) {
	// EU GUARDO A SOMA DA CASA DECIMAL DE UM COM A CASA DECIMAL DO OUTRO...
	// SE A CASA NÃO EXISTIR (POR UM NÚMERO SER MENOR QUE OUTRO), ELE SOMA 0
	// SE ELE ESTIVER VINDO DE UMA SOMA QUE DEU > 9, ELE SOMA A PARTE DECIMAL (AQUELA REGRINHA DE "VAI 1") KKK
	c = Number(ma.substr(w,1)?ma.substr(w,1):0) + Number(k>=0?me.substr(k,1):0) + (c>9?Number(String(c).substr(0,1)):0);
	// SE A SOMA DER > 9, ELE PEGA SÓ A CASA DAS UNIDADES, E ACRESCENTA EM 'D'
	c > 9?d += String(c).substr(1,1):d += c;
	// AQUI ELE DIMINUI A VARIÁVEL QUE CONTROLA O V[1]
	k--;
	// E AQUI ELE VERIFICA SE ELE CHEGOU NO FINAL DA SOMA, E SE A SOMA AINDA DEVE 'SUBIR 1'...
if (!w && c > 9) d += Number(String(c).substr(0,1));
}
 
// COMO A CONTA É FEITA OLHANDO A STRING DA DIREITA PRA ESQUERDA, A GENTE NO CASO FAZ A CONTA INVERTIDA. DEPOIS DA CONTA ESTAR FEITA, É NECESSÁRIO DAR UM REVERSE() NA STRING XD
for (w=l(d)-1;w>=0;w--) {
	r += d.substr(w,1);
}
alert(r);


1 Comentários:

Trackbacks

  1. Jean diz:
    Fala ae galera…
    Eu queria saber se alguem sabe um link para baixar o javascript pro celular(nokia 6001), se alguem souber, favor envia-lo por email, meu email é: jean.rodrigues.d.s@gmail.com
    obrigado!
    agosto 4th, 2009 às 11:24 am

DEIXE UM COMENTÁRIO

Subscrever

Subscreve o Blog



Publicidade

Comentários Recentes

  • shirley Balazs: Parabéns!! Informações de utilidade publica e de primeira, foi muito útil a mim.Obrigada!!
  • Jefferson Ferreira de brito: eu quero muito
  • thiago valente: Eu quero um para mim
  • Lucas martins balieiro: Eu não fiz o enem mesmo assim eu posso me inscrever no site essa é minha dúvida, só queme...
  • Francisca Marli Oliveira: quero saber quanto tenho no meu fgts

Links

Leitores Recentes

VALE O CLIQUE!

Site Seguro Ocioso

Divulgue o blog Infomaroto em seu site e tenha seu link ou banner aqui.
Blog Infomaroto