답변:
사용하는 Math.floor()
것이 한 가지 방법입니다.
자세한 정보 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
음의 무한대로 반올림- Math.floor()
+3.5 => +3.0
-3.5 => -4.0
0으로 반올림 (보통 Truncate()
JavaScript에서는 지원되지 않음) Math.ceil()
은 음수 및 Math.floor()
양수를 사용하여 에뮬레이션 할 수 있습니다 .
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
x | 0
.
Math.floor()
작동하지만 비트 OR
연산 을 사용하는 것과 비교할 때 매우 느립니다 .
var rounded = 34.923 | 0;
alert( rounded );
//alerts "34"
편집이 Math.floor()
입니다 하지 를 사용하는 것보다 속도가 느린 | 운영자. 작업을 확인한 Jason S에게 감사합니다.
테스트하는 데 사용한 코드는 다음과 같습니다.
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 );
특정 소수점 이하 자릿수로 내림해야하는 경우이 기능을 사용할 수 있습니다.
function roundDown(number, decimals) {
decimals = decimals || 0;
return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
}
예
alert(roundDown(999.999999)); // 999
alert(roundDown(999.999999, 3)); // 999.999
alert(roundDown(999.999999, -1)); // 990
부호있는 분수 부분을 빼면을 number
향해 반올림 0
할 수 있습니다 number % 1
.
rounded = number - number % 1;
마찬가지로 Math.floor
(대한 라운드 -Infinity
)이 방법은 완벽하게 정확합니다.
이 취급의 차이는 -0
, +Infinity
그리고 -Infinity
비록 :
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)
오늘 다른 사람의 코드를 다루고 있었고 다음과 같은 것을 발견했습니다.
var dec = 12.3453465,
int = dec >> 0; // returns 12
부호 전파 오른쪽 이동 (>>)에 대한 자세한 내용은 MDN 비트 연산자를 참조하십시오.
이 작업을 수행하는 데 시간이 걸렸습니다.
그러나 위에서 강조한 것처럼 Math.floor ()는 작동하며 내 의견으로는 더 읽기 쉽습니다.
반 아래로 반올림하려면 -1을 넣고 그 아래에 아래 예제와 같이 -1을 곱하십시오.
<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>
다음은 간단한 예제에서 사용되는 math.floor입니다. 이것은 새로운 개발자가 함수에서 그것을 사용하는 방법과 기능에 대한 아이디어를 얻는 데 도움이 될 수 있습니다. 그것이 도움이되기를 바랍니다!
<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>