Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] parseInt não envia 2º var para a funsction

Estava treinando o que avia aprendido, montando o programa de IMC de forma mais elaborada, e percebi que toda vez que coloco a função parseInt nas variáveis de peso e altura, recebia como resultado ao chamar a variável imc, apenas o peso, como se ela estive-se ignorando o calculo da function calculaImc, e só funcionava corretamente se remove-se o função parceInt das variáveis. Se parseInt transforma texto em numero, pq isso acontece? Na minha cabeça isso não tem logica... Insira aqui a descrição dessa imagem para ajudar na acessibilidade

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");

    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();

    }

    function calculaImc(peso, altura) {

        return Math.round(peso / (altura * altura));

    }


    var nome = prompt("Qual o seu nome?");
    var pesoVariavel = parseInt(prompt(nome + ", qual o seu peso?"));
    var alturaVariavel = parseInt(prompt(nome + ", qual a sua altura?"));


    var imc = calculaImc(pesoVariavel, alturaVariavel);

    mostra(nome + " o seu IMC é " + imc);

    if(imc > 35)  {

        mostra("Ele esta a cima do recomendado");
        mostra("para fazer um novo calculo de IMC, aperte F5");

    }

    if(imc < 18.5)  {

        mostra("Ele esta a baixo do recomendado");
        mostra("para fazer um novo calculo de IMC, aperte F5");

    }

    if(imc >= 18.5 && imc <= 35)  {

        mostra("Parabéns, ele esta dentro do recomendado");
        mostra("para fazer um novo calculo de IMC, aperte F5");

    }

    </script>``
1 resposta
solução!

Olá, Miguel! Tudo certo?

A função parseInt é usada para converter uma string em um número inteiro. No entanto, ao usar parseInt nas variáveis de peso e altura, você está perdendo a precisão decimal necessária para calcular o IMC corretamente.

No seu código, você está chamando a função calculaImc passando as variáveis pesoVariavel e alturaVariavel. No entanto, como você usou parseInt nessas variáveis, elas se tornaram números inteiros, o que faz com que o cálculo do IMC seja impreciso.

Para corrigir esse problema, você pode remover o uso da função parseInt nas variáveis de peso e altura. Dessa forma, elas serão tratadas como números decimais e o cálculo do IMC será feito corretamente.

Aqui está o trecho de código corrigido:

var pesoVariavel = parseFloat(prompt(nome + ", qual o seu peso?"));
var alturaVariavel = parseFloat(prompt(nome + ", qual a sua altura?"));

Ao usar parseFloat em vez de parseInt, você estará convertendo as strings em números decimais, permitindo que o cálculo do IMC seja feito corretamente.

Espero que isso ajude! Se você tiver mais alguma dúvida, é só me dizer.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!