JavaScript'te bir sayıyı nasıl yuvarlayabilirim?
math.round()
çalışmaz çünkü en yakın ondalık sayıya yuvarlar.
İlk biti tutmak için ondalık noktada ayırmak dışında bunu yapmanın daha iyi bir yolu olup olmadığından emin değilim. Olmalı...
JavaScript'te bir sayıyı nasıl yuvarlayabilirim?
math.round()
çalışmaz çünkü en yakın ondalık sayıya yuvarlar.
İlk biti tutmak için ondalık noktada ayırmak dışında bunu yapmanın daha iyi bir yolu olup olmadığından emin değilim. Olmalı...
Yanıtlar:
Kullanmak Math.floor()
bunu yapmanın bir yoludur.
Daha fazla bilgi: https://developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
Negatif sonsuza yuvarlama - Math.floor()
+3.5 => +3.0
-3.5 => -4.0
Sıfıra doğru yuvarlama - genellikle denir Truncate()
, ancak JavaScript tarafından desteklenmez - Math.ceil()
negatif sayılar ve Math.floor()
pozitif sayılar kullanılarak taklit edilebilir .
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
x | 0
.
Math.floor()
çalışacak, ancak bitsel bir OR
işlem kullanmaya kıyasla çok yavaş :
var rounded = 34.923 | 0;
alert( rounded );
//alerts "34"
DÜZENLEME Math.floor()
olduğu değil kullanmaktan daha yavaş | Şebeke. Çalışmamı kontrol ettiği için Jason S'ye teşekkürler.
İşte test etmek için kullandığım kod:
var a = [];
var time = new Date().getTime();
for( i = 0; i < 100000; i++ ) {
//a.push( Math.random() * 100000 | 0 );
a.push( Math.floor( Math.random() * 100000 ) );
}
var elapsed = new Date().getTime() - time;
alert( "elapsed time: " + elapsed );
|
32 bit tam sayıya dönüştürür, kesilir; Math.floor
aşağı yuvarlar. jsfiddle.net/minitech/UVG2w
Belirli sayıda ondalık basamağa yuvarlamanız gerekiyorsa bu işlevi kullanmayı deneyebilirsiniz
function roundDown(number, decimals) {
decimals = decimals || 0;
return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
}
örnekler
alert(roundDown(999.999999)); // 999
alert(roundDown(999.999999, 3)); // 999.999
alert(roundDown(999.999999, -1)); // 990
Negatif sonsuza yuvarlamak için şunu kullanın:
rounded=Math.floor(number);
Sıfıra doğru yuvarlamak için (sayı -2147483648 ile 2147483647 arasında 32 bit tam sayıya yuvarlanabilirse) kullanın:
rounded=number|0;
Sıfıra (herhangi bir sayı için) yuvarlamak için şunu kullanın:
if(number>0)rounded=Math.floor(number);else rounded=Math.ceil(number);
Bir Yuvarlama number
doğru 0
onun imzalı kesirli kısmı çıkarılarak yapılabilir number % 1
:
rounded = number - number % 1;
Gibi Math.floor
(doğru yuvarlar -Infinity
) bu yöntem mükemmel doğrudur.
Orada işlenmesi farklılıklar vardır -0
, +Infinity
ve -Infinity
olsa:
Math.floor(-0) => -0
-0 - -0 % 1 => +0
Math.floor(Infinity) => Infinity
Infinity - Infinity % 1 => NaN
Math.floor(-Infinity) => -Infinity
-Infinity - -Infinity % 1 => NaN
Math.floor(1+7/8)
Bugün bir başkasının kodu ile uğraştı ve aşağıdaki gibi de bulundu:
var dec = 12.3453465,
int = dec >> 0; // returns 12
İşaret ilerletme sağ kaydırma (>>) hakkında daha fazla bilgi için bkz. MDN Bitwise Operators
Bunun ne yaptığını çözmek biraz zaman aldı: D
Ancak yukarıda vurgulandığı gibi, Math.floor () işe yarıyor ve bence daha okunabilir görünüyor.
-1'i yarıya yuvarlamak ve bundan sonra aşağıdaki aşağı örnek gibi -1 ile çarpmanız gerekir.
<script type="text/javascript">
function roundNumber(number, precision, isDown) {
var factor = Math.pow(10, precision);
var tempNumber = number * factor;
var roundedTempNumber = 0;
if (isDown) {
tempNumber = -tempNumber;
roundedTempNumber = Math.round(tempNumber) * -1;
} else {
roundedTempNumber = Math.round(tempNumber);
}
return roundedTempNumber / factor;
}
</script>
<div class="col-sm-12">
<p>Round number 1.25 down: <script>document.write(roundNumber(1.25, 1, true));</script>
</p>
<p>Round number 1.25 up: <script>document.write(roundNumber(1.25, 1, false));</script></p>
</div>
İşte math.floor basit bir örnekte kullanılıyor. Bu, yeni bir geliştiricinin bir işlevde nasıl kullanılacağı ve ne işe yaradığı hakkında bir fikir edinmesine yardımcı olabilir. Umarım yardımcı olur!
<script>
var marks = 0;
function getRandomNumbers(){ // generate a random number between 1 & 10
var number = Math.floor((Math.random() * 10) + 1);
return number;
}
function getNew(){
/*
This function can create a new problem by generating two random numbers. When the page is loading as the first time, this function is executed with the onload event and the onclick event of "new" button.
*/
document.getElementById("ans").focus();
var num1 = getRandomNumbers();
var num2 = getRandomNumbers();
document.getElementById("num1").value = num1;
document.getElementById("num2").value = num2;
document.getElementById("ans").value ="";
document.getElementById("resultBox").style.backgroundColor = "maroon"
document.getElementById("resultBox").innerHTML = "***"
}
function checkAns(){
/*
After entering the answer, the entered answer will be compared with the correct answer.
If the answer is correct, the text of the result box should be "Correct" with a green background and 10 marks should be added to the total marks.
If the answer is incorrect, the text of the result box should be "Incorrect" with a red background and 3 marks should be deducted from the total.
The updated total marks should be always displayed at the total marks box.
*/
var num1 = eval(document.getElementById("num1").value);
var num2 = eval(document.getElementById("num2").value);
var answer = eval(document.getElementById("ans").value);
if(answer==(num1+num2)){
marks = marks + 10;
document.getElementById("resultBox").innerHTML = "Correct";
document.getElementById("resultBox").style.backgroundColor = "green";
document.getElementById("totalMarks").innerHTML= "Total marks : " + marks;
}
else{
marks = marks - 3;
document.getElementById("resultBox").innerHTML = "Wrong";
document.getElementById("resultBox").style.backgroundColor = "red";
document.getElementById("totalMarks").innerHTML = "Total Marks: " + marks ;
}
}
</script>
</head>
<body onLoad="getNew()">
<div class="container">
<h1>Let's add numbers</h1>
<div class="sum">
<input id="num1" type="text" readonly> + <input id="num2" type="text" readonly>
</div>
<h2>Enter the answer below and click 'Check'</h2>
<div class="answer">
<input id="ans" type="text" value="">
</div>
<input id="btnchk" onClick="checkAns()" type="button" value="Check" >
<div id="resultBox">***</div>
<input id="btnnew" onClick="getNew()" type="button" value="New">
<div id="totalMarks">Total marks : 0</div>
</div>
</body>
</html>