Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com parseInt

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
        document.write("<br>");
}

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
}

    function calculaImc(altura, peso) {

        return peso / (altura * altura);
}

var nome = prompt("Informe o seu nome");
var alturaInformada = parseInt(prompt(nome + ", informe sua altura"));
var pesoInformado = parseInt(prompt(nome + ", informe seu peso"));

var imc = calculaImc(alturaInformada, pesoInformado);

document.write(nome + ", o seu IMC é " + imc);

</script>

Se tiro a função parseInt o código funciona normalmente .Contudo se o utilizo, ele apenas reproduz o peso digitado.

2 respostas
solução!

Olá, Stella, isso acontece porque o parseInt lê o valor como um número inteiro.

Por exemplo, o valor de 1.75 de altura é lido como 1. Por isso o resultado é o valor do peso, já que o denominador da equação resultará em 1.

Para resolver isso, deve-se utilizar o parseFloat, que considera casas decimais, assim:

<meta charset="UTF-8">

<script>

    function pulaLinha() {

        document.write("<br>");
        document.write("<br>");
}

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
}

    function calculaImc(altura, peso) {

        return peso / (altura * altura);
}

var nome = prompt("Informe o seu nome");
var alturaInformada = parseFloat(prompt(nome + ", informe sua altura"));
var pesoInformado = parseFloat(prompt(nome + ", informe seu peso"));

var imc = calculaImc(alturaInformada, pesoInformado);

document.write(nome + ", o seu IMC é " + imc);

</script>

Lembrando do comentário do instrutor Flávio (item 18 da aula 07):

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero ter contribuído para esclarecer sua dúvida. Bons estudos!

Era isso mesmo Leila, obrigada!