Ir para conteúdo

POWERED BY:

Arquivado

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

John Petrucci

Problemas com somas no JavaScript

Recommended Posts

Pessoal, alguém sabe me explicar pq que acontece isto e como resolver?

Eu tenho este simples script:

 

<script language="javascript" type="text/javascript"><!--	var a = 1;	var b = 0.82;	var c = parseFloat(a + B);	alert(c);//--></script>

a saída desta conta é "1.8199999999999998" sendo que eu apenas queria um simples "1.82"!

E isto está me atrapalhando bastante pq não consigo fazer a porcaria do JS calcular certo!

 

Sei que o JS tem problemas para trabalhar com nros... que ele não é mto preciso as vezes, mas pô! É uma conta muito simples esta!!!!! hehe

 

Será que esqueci de algo no code?

Alguém tem uma sugestão?

 

Valeu pessoal.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, eu consegui fazer aki, nao sei c eh mto confiavel, mas pega ai e faz uns testes pra ver se resolve:

 

var a = 1;var b = 0.82;var c = (a + b).toPrecision(3);alert(c);

Compartilhar este post


Link para o post
Compartilhar em outros sites

outra coisa q você pode fazer, eh mudar um poko a matematica, por exemplo, c você sabe q você vai mexer muito com 3 casas decimais, multiplica tudo por 1000, faz os calculos todo em inteiros, e depois (no final) divide por 1000, assim o javascript nao vai se perder nos flutuantes ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, eu consegui fazer aki, nao sei c eh mto confiavel, mas pega ai e faz uns testes pra ver se resolve:

var a = 1;var b = 0.82;var c = (a + b).toPrecision(3);alert(c);
Valeu Wilker, funcionou a sua sugestão do toPrecision, a segunda sugestão não funciona muito bem com os calculos do sistema. Já era feito uma lógica semelhante ao que disse e dá um erro muito frequente de diferença de 1 centavo o que já me gerou muita dor de cabeça que poderia ter sido evitado se eu conhecesse o toPrecision hehehe e também a função que faz isto é variável, ela se adapta a qtde de casas decimais que for passado por parametro o que já consegui fazer também com o toPrecision.De qualquer forma, valeu! Me ajudou bastanteAbraço! :)

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.