[javascript] Javascript에서 숫자를 어떻게 내릴 수 있습니까?

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)