3
respostas

Resultado do calcula IMC aparece a mensagem NaN

Olá, pessoal! Não consegui identificar aonde está o erro do código sobre como calcular o IMC. No console não aprece aonde está o erro. Alguém poderia me ajudar na solução deste problema?

<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 = prompt(nome + ", informe sua altura");
var pesoInformado = prompt(nome + ", informe seu peso");

var imc = calculaImc(alturaInformada, pesoInformado);

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

</script>
3 respostas

Boa noite, Fábio!

O erro Nan, significa Not A Number.

No seu código ao ler os valores alturaInformada e pesoInformado está sendo lido no tipo String (frase). Para isso é necessário converter para inteiro, através do parseInt() No seu código ficaria assim: var alturaInformada = parseInt(prompt(nome + ", informe sua altura")); A mesma coisa para o peso também.

Boa noite, Pedro!

Infelizmente não deu certo. Fiz a correção nos dois valores e mesmo assim traz um resultado de 73. Informei a altura de 1,76 e o peso de 73 kg. O que poderá está acontecendo?

Boa noite, Fábio!

Erro meu, na verdade os valores precisam ser do tipo Float (valores que aceitam xx,02) pois a altura geralmente é ex.: 1,75 ou 1,64. Mesma coisa para o peso: 76.8 ou 65.9.

Para isso é a mesma coisa: parseFloat() > var alturaInformada = parseFloat(prompt(nome + ", informe sua altura")); e var pesoInformado = parseFloat(prompt(nome + ", informe seu peso"));

O valor pode voltar com muitas casas decimais, para isso você pode usar o toFixed(n) sendo n a quantidade de casas decimais. Ai logo após executar a função pode colocar imc = imc.toFixed(2); ou return (peso / (altura * altura)).toFixed(2);