Javascript에서 숫자를 반올림하려면 어떻게 해야 하나요?
JavaScript에서 숫자를 반올림하려면 어떻게 해야 합니까?
math.round()
소수점 이하까지 반올림하기 때문에 효과가 없습니다.
첫 번째 비트를 유지하는 소수점에서 분해하는 것 말고는 더 나은 방법이 없을지 모르겠다.분명히...
「」를 사용합니다.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을 향해 반올림 할 수 있습니다.이전 브라우저에서는 이 기능을 지원하지 않습니다.이러한 기능을 지원하려면Math.ceil()
및 음수일 Math.floor()
양수일 경우.
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
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
a 의 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)
음의 무한대로 반올림하려면 다음을 사용합니다.
rounded=Math.floor(number);
0을 향해 반올림하려면(숫자가 -2147483648 ~2147483647 사이의 32비트 정수로 반올림할 수 있는 경우) 다음 명령을 사용합니다.
rounded=number|0;
(임의의 숫자에 대해서) 제로로 반올림하려면 , 다음의 순서를 사용합니다.
if(number>0)rounded=Math.floor(number);else rounded=Math.ceil(number);
오늘 누군가 코드를 만지작거리다가 반올림된 것 같은 다음 사항을 발견했습니다.
var dec = 12.3453465,
int = dec >> 0; // returns 12
사인 전파 오른쪽 이동(>)에 대한 자세한 내용은 MDN Bitwise Operators 를 참조하십시오.
이게 뭘 하고 있는지 알아내는 데 시간이 좀 걸렸어요.d
그러나 위에서 강조 표시된 것처럼 Math.floor()가 작동하며 제 생각에는 더 읽기 쉬워 보입니다.
이것이 내가 발견한 가장 확실한 해결책이었다.
function round(value, decimals) {
return Number(Math.floor(parseFloat(value + 'e' + decimals)) + 'e-' + decimals);
}
-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>
Math.round(3.14159 * 100) / 100 // 3.14
3.14159.toFixed(2); // 3.14 returns a string
parseFloat(3.14159.toFixed(2)); // 3.14 returns a number
Math.round(3.14159) // 3
Math.round(3.5) // 4
Math.floor(3.8) // 3
Math.ceil(3.2) // 4
언급URL : https://stackoverflow.com/questions/1435975/how-can-i-round-down-a-number-in-javascript
'programing' 카테고리의 다른 글
Twitter API 버전 1.1에서 user_timeline을 검색하는 가장 간단한 PHP 예제 (0) | 2022.09.24 |
---|---|
URI를 의도에 전달하려면 어떻게 해야 합니까? (0) | 2022.09.21 |
SQLite 대신 MySQL을 사용하여 새 Ruby on Rails 응용 프로그램 만들기 (0) | 2022.09.21 |
원칙이 있는 여러 열로 정렬 (0) | 2022.09.21 |
자바의 정수 분할 (0) | 2022.09.21 |