6
respostas

[DÚVIDA] parseInt apresentando resultados diferentes: Bug na Matrix!

Olá!! Por que dependendo de onde o "parseInt" fica os resultados são diferentes??

O resultado é 30:

<meta charset="UTF-8">
<script>

    var num = parseInt(10.5);
    var calc = 3;

    document.write(num * calc);

</script>

o resultado é 31:

<meta charset="UTF-8">
<script>

    var num = (10.5);
    var calc = 3;

    document.write(parseInt(num * calc));

</script>
6 respostas
parseInt(10.5); 
// 10 
// 10 * 3
// resultado é 30

// 10.5 * 3 =  31.5
parseInt(31.5); // 31
// resultado é 31

Oi Robson, até onde sei o parseInt arredonda as casa decimais, por isso o resultado deu 30. Para consegui ler as casa decimais, o ideal é usar o parseFloat.

Também tenho o mesmo entendimento que a Andréa.

Oi Robson! Isso está acontecendo porque o parseInt na var num está arredondando 10,5 para 10, o que faz com que o resultado seja 30. Já o parseInt no document.write está arredondando o resultado de 31,5 para 31. Creio que se o que você quer é que o resultado seja exibido como número inteiro, o correto seria o uso do parseInt no document.write mesmo ao invés de usá-lo na var num.

Como bem escreveu o amigo Luis Dias, o código fica assim:

parseInt(10.5); 
// 10 
// 10 * 3
// resultado é 30

// 10.5 * 3 =  31.5
parseInt(31.5); // 31
// resultado é 31

Para evitar esse arredondamento, utilize o parseFloat().

Vejamos um exemplo:

*  var numero = parseInt("12.13");

O valor de numero será 12. Para que as casas decimais sejam mantidas, usamos o método parseFloat():

* var numero = parseFloat("12.13");

O valor de numero será 12.13.

Exemplo extraído da lição: "Javascript e HTML: desenvolva um jogo e pratique lógica de programação", aula 07 - conteúdo de nº 18 "parseFloat: quando usar?".

Boa André! Muito bom!!