6
respostas

A resposta do IMC está dando NAN quando digito a altura com virgulas.

Olá, No pop-up quando vou informar a minha altura com o uso da virgula ex: altura 1,71 o resultado do IMC é NAN, mas quando utilizo o ponto ex: altura 1.71 da certo, Por que isso ocorre ?

6 respostas

Olá Jucival. O separador decimal que o Javascript aceita é o ponto.

Oi Jucivaldo, isso é uma característica da própria sintaxe do JavaScript. A virgula, ela é reconhecido pelo programa como um caractere que separa informações. O ponto, no sistema métrico americano, ele funciona como o marcador de casas decimais. Aqui no brasil, e acredito que em alguns outros países latinos, usamos a vírgula como divisor das casas decimais. Isso é só uma questão de sintaxe. Sua opção, é que no prompt, informe ao usuário que ele deve usar o ponto em vez da virgula.

Agora, se não me engano, existe uma forma de retornar o valor do prompt com virgula e o programa transforma em ponto. Mas você teria que testar: Com a função parseFloat( ). Você escreve assim:

var altura = parseFloat(prompt ("Qual a sua altura?"));

Assim, ele retorna uma variável do tipo Float, similar a um int. Testa, se funcionar, me avisa...

Espero ter ajudado.

Boa noite, tive a mesma dúvida, grato pelas explicações.

Germanna, acabei tendo essa mesma dúvida e por conta própria fiz o teste com o parseFloat, mas infelizmente não deu certo. O IMC que deveria dar em torno de 28 ele retorna 81, caso o usuário entre com uma altura com vírgula. Realmente necessita informar ao usuário que entra com uma informação com ponto ao invés da vírgula.

Estava com o mesmo erro, obrigada pelas explicações.

Obrigado a todos que responderam.

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