4
respostas

Só aparece NaN em meu resultado.

Postando aqui minha primeira pergunta, peço desculpas se estiver mal formatada.

A questão é que eu já reverifiquei o código e não consigo entender o motivo que no resultado aparece apenas "Diego, seu IMC é de NaN" O mais estranho é que ao testar o mesmo código no celular, aparece o resultado do IMC normalmente. Alguém saberia o motivo? Desde já agradeço!

<meta charset="UTF-8">

<script>
    function pulaLinha() {

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

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

   function calculaImc(altura, peso) {

        return peso / (altura * altura);
    }


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

    var imc = calculaImc(alturaInformada, pesoInformado);

    mostra (nome + ", seu IMC é de " + imc);

    </script>
4 respostas

Já adianto que está resolvido!

Desde já agradeço a quem venha a tentar ajudar. Bons estudos!

Olá Diego, tudo bem?

Que legal saber que você já resolveu o problema Diego, você poderia compartilhar aqui com a gente como foi resolvido? Assim poderá ajudar outros alunos que possam ter o mesmo problema.

Continue assim e bons estudos!

Olá Daniele tudo bem! E contigo?

Pois então, a culpa foi absolutamente minha.

Simplesmente na hora de digitar a Altura eu estava sem perceber usando o "," ao invés do "." . Pois reparei que as vezes o resultado aparecia de maneira correta.

Moro em Portugal mas meu teclado é padrão Italiano, então não sei se são todos assim, mas as teclas "," e "." são ao lado, e ao digitar rápido esse erro acontecia, causando a formatação errada do numeral da altura, que no caso ficava "1,80" ao invés da forma correta "1.80" como deveria ser.

Maravilha Pessoal! Foi interessante demonstrar qual foi o problema.

Ainda não é o momento, mas podemos impedir que o usuário entre com "."(ponto) a fim de obrigá-lo a utilizar ","(vírgula) ou até mesmo tratar essa entrada para que não ocorra erro.

Mas ainda não estamos nessa parte de nosso aprendizado, também não sei se nesse curso vai demonstrar como realizar esse tratamento, mas fato é que existe.

Use a função parseFloat(string).replace(',' , '.') abaixo para evitar que a entrada de vírgula fornecesse a mensagem NaN ( Not a Number). Ele substitui a virgula por ponto tornando o número em Float.

var alturaInformada = parseFloat(3,5).replace(',','.'));

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software