Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

[Duda] CONSULTA POR ERROR "NaN"

En el siguiente código hay un error en el resultado que arroja ya que debería devolver el valor del IMC y en su lugar imprime "(nombre), su imc calculado es: NaN". No se a que obedecce el error, trate de identificarlo y no encontre nada que corregir en el codigo; lo curioso es que al probar introduciendo valores mas pequeños de peso y altura el programa funciona perfectamente y, mas curioso aun es que el mismo código (a menos que se haya deslizado un error que no identifique al transcribirlo) es identico al expuesto por el instructor en la clase pertinente y que al ser ejecutado durante la clase funcionaba perfectamente cualquiera fueran los valores introducidos . Agradecería que puedan decirme su opinion:

<meta charset = "UTF-8">

<h1>PROGRAMA CALCULAR IMC</h1>

<script>
    function saltarlinea(){

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

    }


    function imprimir(frase){;

        document.write(frase);

        saltarlinea();


    }

    function calcularImc(peso, altura){
        return peso / (altura*altura);

    }

nombre = prompt("Informe su nombre");
pesoInformado = prompt(nombre + ", Informe su peso");
alturaInformada = prompt(nombre + ", Informe su altura");

imcCalculado = calcularImc(pesoInformado, alturaInformada);

imprimir(nombre + ", su imc calculado es: " + imcCalculado);


</script>
4 respuestas

Hola, la función prompt te devuelve una cadena, estás haciendo operaciones con cadenas en la función calcularIMC, por lo que en la respuesta recibes un Not a Number (NaN); Debes utilizar la función parseInt() para convertir una cadena a número. Tu código quedaría así: parseInt(prompt("Ingrese su peso"));

solución!

Podra ser que el problema sea que estas ingresando decimales con , (coma) y no con punto .(punto)?

Lo copie tal cual y lo corrí sin dificultad. Sale bien en mi Chrome

Muchas gracias por todos los aportes! Voy a probar lo sugerido y veo si se corrige el problema.