3
respostas

Porque apresenta NaN quando coloco vírgula em vez de ponto?

Boa tarde!

Fiz separado este post para distinguir as dúvidas.

Sobre o uso da vírgula e do ponto ao inserir números no programa abaixo.

Ao colocar vírgula "," no campo da altura (1,71), o resultado retorna NaN.

[Imgur](Erro NaN)

Porém, se coloco ponto "." retorna o resultado correto.

Sabem explicar o por quê?

<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("Qual é o seu nome?");
var alturaInformada = prompt(nome + ", qual é a sua altura?");
var pesoInformado = prompt(nome + ", qual é o seu peso?");
var idadeInformada = prompt(nome + ", qual é a sua idade?");

var imc = calculaImc(alturaInformada, pesoInformado);

mostra(nome + ", o seu IMC é: " + Math.round(imc) + ".");

</script>

Muito obrigado.

Sucesso a todos!

3 respostas

Virgula não é entendido na linguagem, precisa ser convertido igual quando se faz um ParseInt quando quer que ele altere seu texto para número. Criei uma linha a mais no código realizando a conversão de VIRGULA para PONTO para que o programa reconheça essa virgula. Espero ter ajudado, forte abraço.

Aluno,

Como você fez este código? Consegue compartilhar aqui para nós.

Grato!

Sucesso!

Bom dia! Estou postando.

<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("Qual é o seu nome?");
var alturaInformada = prompt(nome + ", qual é a sua altura?");

var altura1 = parseFloat(alturaInformada.replace(",", ".")); //Linha adicionada

var pesoInformado = prompt(nome + ", qual é o seu peso?");
var idadeInformada = prompt(nome + ", qual é a sua idade?");

var imc = calculaImc(altura1, pesoInformado); //alturaInformada alterado para altura1

mostra(nome + ", o seu IMC é: " + Math.round(imc) + ".");

</script>

Foi a maneira que encontrei. Caso tenha ajudado peço que altere o post para resolvido, vai ajudar demais ;)

Forte abraço e bons estudos!