I know there are more of the "Math.floor not working" questions, but I didn't found my answer there, so that's why I made this question.
I am making a simple algorithm which is looking for your number by jumping in between the range. So for example, range = 100, number = 60. It will go to 50, see it's higher, so the range is 50 - 100. then it jumps to 75 to see if it's either bigger or smaller, and so on until it found the right number.
To make this a bit more clear, I thought: "I'll round them downwards by using Math.floor." But for some reason it doesn't work.
My code:
var guessTheNumber = function() {
var validNumber = false; // Geldig nummer = niet waar
var userNumberHTML = document.getElementById("userNumberHTML"); // Noem HTML element met ID "userNumberHTML" "userNumberHTML"
var guessedNumbers = document.getElementById("guessedNumbers"); // noem HTML element met ID "guessedNumbers" "guessedNumbers"
guessedNumbers.innerHTML = "Guessed number(s): ";
var minNumber = 0; // Minimum wat mensen kunnen invullen
var maxNumber = 100; // Maximum wat mensen kunnen invullen
var userNumber = prompt("Tell me a number between 0 and 100, including those (numbers with decimals will be rounded downwards)."); // Vraag gebruiker welk nummer
userNumber = Math.floor(userNumber); // Nummer wordt naar beneden afgerond
var counter = 1;
var result = 0;
var q = 1;
if (userNumber >= minNumber && userNumber <= maxNumber) { // Als het een getal is groter of gelijk aan 1 en kleiner of gelijk aan 100
userNumberHTML.innerHTML = "Your number: " + userNumber; // Geef "x" in HTML de waarde van "userNumber", namelijk het genoemde getal
} else { // Anders
while (validNumber == false) { // Zolang validNumber NIET waar is
userNumber = prompt("This is not a number between 0 and 100. Try again."); // wordt "userNumber" de waarde van de nieuwe prompt
if (userNumber >= 1 && userNumber <= 100) { // Als het een getal is groter of gelijk aan 1 en kleiner of gelijk aan 100
userNumberHTML.innerHTML = "Your number: " + userNumber; // Geef "x" in HTML de waarde van "userNumber", namelijk het zojuist genoemde getal
validNumber = true; // Zet validNumber op WEL waar
}
}
}
result = (minNumber + maxNumber) / 2;
Math.floor(result);
guessedNumbers.innerHTML += result + ", ";
while (result != userNumber) {
if (result < userNumber) {
Math.floor(result);
minNumber = result;
} else {
Math.floor(result);
maxNumber = result;
}
result = (minNumber + maxNumber) / 2;
guessedNumbers.innerHTML += result + ", ";
q++;
}
guessedNumbers.innerHTML += "and there you go!";
alert("The PC guessed your number in " + q + " times!");
if (confirm("Try again?")) {
guessedNumbers.innerHTML = "Guessed number(s): ";
guessTheNumber();
}
}
<!DOCTYPE html>
<html>
<head>
<title>JS test</title>
</head>
<body>
<button onclick="guessTheNumber()" style="height: 100px; width: 200px;">Let the Computer find your number!</button>
<p id="userNumberHTML">Your number: </p>
<p id="guessedNumbers">Guessed number(s): </p>
<p id="TEST"></p>
<!-- SCRIPTS -->
<!-- <script type="text/javascript" src="guessTheNumber.js"></script> -->
<script type="text/javascript" src="test.js"></script>
</body>
</html>
I do really not know what I am doing wrong, since the user input does Math.floor like it should! Any help is appreciated :)
Thanks in advance,
Brent
Math.floor(result)
returns the result, so you have to use:
result = Math.floor(result);