"Seu imc é NaN" ??

915 views
Skip to first unread message

ctnk

unread,
Sep 29, 2016, 1:42:34 AM9/29/16
to Lógica de Programação
Alguém me explica pq o imc está dando 'NaN' nesse código:

<meta charset="UTF-8">
<script>
//função para quebrar linha
var line = function(){
document.write("<br>")
};
//função para mostrar frase com quebra de linha
var show = function(quote){
document.write (quote);
line();
};
//função que calcula o imc
var calcimc = function(hei, wei)/*hei é altura e wei é peso*/{
var imc = wei/(hei+hei);
return imc;
};
var altura = prompt("Qual sua altura?");
var peso   = prompt("Qual seu peso?");
var seuimc = calcimc(altura, peso);
show("Seu imc é " + seuimc);

</script>
Message has been deleted

Anddrei Ferreira

unread,
Nov 5, 2016, 11:23:57 PM11/5/16
to Lógica de Programação
Percebi em seu código que, ao pedir para que o usuário informe altura e peso, você não converte o que foi digitado para algum tipo de número (int, float, double).

A função prompt que você usa pedindo que o usuário digite alguma coisa te retorna uma string, logo, operações matemáticas com string não numérica resultará em algo que não é um número, por isso seu cálculo do IMC está dando NaN: Not a Number.

É importante, nesse caso, transformar a string recebida que o usuário digitou em número.
Por exemplo: se o usuário digitar 85 quando lhe é pedido seu peso, a função prompt vai te retornar "85", e em JavaScript qualquer texto entre aspas simples ou duplas representa string, certo?
Logo, você vai ter que usar alguma função de parse para isso, e já que estamos falando de números que podem conter casas decimais (peso, altura), recomendo a função parseFloat(), dê uma olhada aqui: http://www.w3schools.com/jsref/jsref_parsefloat.asp
Reply all
Reply to author
Forward
0 new messages