Hice un juego simple de adivinanzas de números en javascript que va del 1 al 100.
Mi problema es que todo funciona, excepto cuando escribo un número decimal del 100 al 101. Quiero que mi código me muestre el mensaje "Por favor, ingrese un número del 1 al 100", pero no es así.
¿Cómo hago para que Javascript redondee esto correctamente?
let randomNumber = Math.floor(Math.random() * 100); // Random number function guess() { let inp = document.getElementById("number").value; // Reading input let inpRounded = Math.floor(inp); // Random number is higher if (inpRounded < randomNumber && inpRounded >= 1 && inpRounded <= 100) { document.getElementById("result").innerHTML = "Higher"; } // Random number is lower else if (inpRounded > randomNumber && inpRounded >= 1 && inpRounded <= 100) { document.getElementById("result").innerHTML = "Lower"; // Input matches random number } else if (inpRounded == randomNumber && inpRounded >= 1 && inpRounded <= 100) { document.getElementById("result").innerHTML = "You won!"; } // Input is weird else if (inpRounded == null) { document.getElementById("result").innerHTML = "Please enter a valid number"; } // Input is lower than 1 or higher than 100 else if (inpRounded < 1 || inpRounded > 100) { document.getElementById("result").innerHTML = "Please enter a number from 1 to 100"; } // Other issue else { document.getElementById("result").innerHTML = "Error" } } <h2>Enter a number from 1 to 100</h2> <input type="number" placeholder="Type your guess here" id="number"> <input type="button" value="Go!" onclick="guess()"> <p id="result"></p>Simplemente coloque este código primero antes de verificar otras cosas.
if (inpRounded == null) { document.getElementById("result").innerHTML = "Please enter a valid number"; return; } if (inpRounded < 1 || inpRounded > 100) { document.getElementById("result").innerHTML = "Please enter a number from 1 to 100"; return; }No redondee el número inicialmente, de lo contrario perderá la información decimal que necesita cuando desea rechazar valores entre 100 y 101.
function guess() { const value = document.getElementById("number").value; // Reading input const numValue = Number(value); if (numValue < 1 || numValue > 100) { document.getElementById("result").textContent = "Please enter a number from 1 to 100"; return; } const inpRounded = Math.floor(numValue); // etc