"Math.floor not working"の質問が増えていますが、私の答えは見つからなかったので、私はこの質問をしました。Javascript - Math.floorは機能しません
私は範囲の間にジャンプしてあなたの番号を探している簡単なアルゴリズムを作っています。たとえば、range = 100、number = 60です。これは50になります。より高いので、範囲は50 - 100です。次に、それが大きいか小さいかを調べるために75にジャンプします。正しい番号。
これをもう少し明確にするために、私は「私はMath.floorを使って下に丸めます」と考えました。しかし何らかの理由でそれはうまくいかない。
マイコード:
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>
それが必要のようなユーザ入力がMath.floorを行いますので、私は本当に、私が間違っているのかわかりません!すべてのヘルプは高く評価されて:)あなたが使用する必要がありますので、事前に
おかげで、
ブレント
あなたは、いくつかの 'にconsole.logに落ちたことがありますを使用することを検討した結果を修正するため、効果がありませんではないでしょう() 'が呼び出され、ループの実行中にあなたの数値がどのように変化しているかを確認できますか? – Pointy
答えに加えてもう1つ注意すべきことは、「Math.Floor」は小数点以下を切り捨てることです。たとえば、最も近い10に丸めたい整数があれば、 'Math.Floor'は何もしません。 – stybl
@stybl彼は2で割っているので、数字が奇数の場合は小数点を削除します。 – Barmar