프로그래밍/Node.js

[javascript] 실수를 정수형으로 바꾸기(소수점 버리기)

채윤아빠 2023. 11. 13. 10:47
728x90
반응형

자바스크립트에서 실수를 정수형으로 바꿀 때, 주로 Math의 round(), floor(), ceil() 함수들을 이용했습니다.

그런데, 우연히 실수형 변수에 "| 0"을 하는 문법을 보고 도대체 무엇을 하는 코드인지 동작시켜 봤는데, 이게 물건이었습니다.

바로 다음 실행 결과를 보시면 이해가 빠르실 겁니다.

>> 1.10 // === Math.floor(1.1)
1
>> -1.10 // === Math.ceil(-1.1)
-1
>> 9.90 // === Math.floor(9.9)
9
>> -9.90 // === Math.ceil(-9.9)
-9

즉, 실수에 "| 0" 연산을 하면 0보다 작은 음수일 경우에는 ceil() 함수처럼 동작하고 0보다 큰 실수는 floor() 함수처럼 동작합니다.

풀어서 설명드리자면, 실수의 소수점 부분을 버리고 정수 부분만 취한다고 생각하시면 조금더 이해가 쉽습니다. 문자열로 생각한다면, "." 문자를 포함한 이후는 버리는 셈입니다.

shuffleArray() 함수에서 "| 0" 연산을 이용하는 것을 보고 무릎을 탁 쳤습니다. ^^

function shuffleArray( array ){
 var count = array.length,
     randomnumber,
     temp;
 while( count ){
  randomnumber = Math.random() * count-- | 0; // cast int ; remove decimal
  temp = array[count];
  array[count] = array[randomnumber];
  array[randomnumber] = temp
 }
}

참고자료