JavaScript에서 숫자를 어떻게 내릴 수 있습니까?
math.round()
가장 가까운 10 진수로 반올림하기 때문에 작동하지 않습니다.
첫 번째 비트를 유지할 때 소수점에서 분리하는 것보다 더 좋은 방법이 있는지 확실하지 않습니다. 있어야합니다 …
답변
사용하는 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()
답변
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
답변
음의 무한대를 향해 반올림하려면 다음을 사용하십시오.
rounded=Math.floor(number);
0으로 반 내림하려면 (숫자가 -2147483648과 2147483647 사이의 32 비트 정수로 반올림 될 수있는 경우) 다음을 사용하십시오.
rounded=number|0;
숫자를 0으로 반올림하려면 다음을 사용하십시오.
if(number>0)rounded=Math.floor(number);else rounded=Math.ceil(number);
답변
부호있는 분수 부분을 빼면을 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)