Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

¿Habra alguna funcion en JS que pueda reducir los decimales de un número a solo dos?

Hola todos! Comparto con ustedes el ejercicio hecho en clase, pero con algunos detalles que he cambiado: 1) Una vez mas juego con las funciones, como pueden ver la condicional esta dentro de una función que resive como parametro el imcCalculado y retorna la clasificación. Esto lo hice con la intención de no usar tanto la función imprimir jeje. 2) Use la función Math.round() con la intención de que no muestre un número con tantos decimales, como lo muestra el profesor en su ejemplo. Sin embargo, me he puesto a pensar y me di cuenta de que si una persona tiene el imc de 24.6 deberia de estar dentro de la clasificacion de "Intervalo Normal", pero al redondearlo lo convierte a 25 y lo clasifica como "Sobrepeso" jajaja.

¿Habra alguna funcion en JS que pueda reducir los decimales de un número a solo dos? Agradezco sus comentarios xd

<!DOCTYPE html>
<html lang="es">
    <head>
        <title>CALCULO DE IMC (Índice de Masa Corporal)</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <h1>Calculo de IMC</h1>
        <hr>
        <script>
            var nombre = prompt("Digite su Nombre:");
            var peso = prompt(nombre+" digite su peso:");
            var altura = prompt(nombre+" digite su altura:");

            function calcularIMC(peso,altura) {
                return (Math.round(peso/(altura*altura)));
            }

            function saltarLinea() {
                document.write("<br>");
                document.write("<br>");
            }   

            function imprimir(contenido) {
                document.write(contenido);
                saltarLinea();                
            }

            function categorizacion(imcCalculado){
                if (imcCalculado < 18.5) {
                    return "Insuficiencia ponderal";
                }
                if (imcCalculado >= 18.5) {
                    if (imcCalculado <= 24.9) {
                        return "Intervalo normal";
                    }
                }
                if (imcCalculado >= 25) {
                    if (imcCalculado < 30) {
                        return "Sobrepeso";
                    } 
                }
                if (imcCalculado >= 30) {
                    return "Obesidad";
                }
            }
            imcCalculado = calcularIMC(peso,altura);

            imprimir(nombre+" su IMC calculado es de "+ imcCalculado);
            imprimir("Su IMC es clasificado como: "+ categorizacion(imcCalculado));
        </script>
    </body>
</html>
2 respuestas
solución!

Hola, también tenía esa duda. La solución más simple que encontre fue estas: Math.round(num * 100) / 100, sin embargo mencionan que no es del todo exacta. Creo que por ahora es suficiente a medida que vayamos aprendiendo podremos crear nuestras propias funciones de redondeo. Las funciones como round, ceil y floor redondean a entero, también existe numero.toFixed(2) que redondea los decimales con el inconveniente de que transforma al número en un string y luego tendrías que convertirlo a número nuevamente, puede ser útil en otros casos. Te comparto el foro donde encontre la respuesta. Saludos https://es.stackoverflow.com/questions/48958/redondear-a-dos-decimales-cuando-sea-necesario

Gracias por el aporte Gabriel :)