[JavaScript] parseInt() vs Math.floor() ~~

play·2022년 10월 25일
1

JaveScript

목록 보기
10/10
post-thumbnail

예전에 Number, parseInt의 차이를 공부하다 알게된 내용이긴 한데,
문제를 풀다가 parseInt 또는 Math.floor를 써야될 일이 생겼어서 그 차이를 정리한다.

console.log(Math.floor(5.95)); // 5
console.log(Math.floor(5.05)); // 5
console.log(Math.floor(5)); // 5
console.log(Math.floor(-5.05)); // -6
Math.floor('1asdf') // NaN

console.log(parseInt(5.95)); // 5
console.log(parseInt(5.05)); // 5
console.log(parseInt(5)); // 5
console.log(parseInt(-5.05)); // -5 
parseInt('1asdf') // 1

양수 : 둘 다 내림하여 반환
음수 : parseInt는 소수점을 버리고, Math.floor는 내림
문자+숫자 : parseInt 숫자만 반환


속도는 Math.floor가 더 빠르다.




~~ vs Math.floor

~~ 연산자를 알게 되었는데, Math.floor와 무슨 차이인지 궁금해서 이것도 돌려봤다.

console.log(~~-1);    // -1
console.log(~~0);     // 0
console.log(~~1);     // 1
console.log(~~5.6);   // 5
console.log(~~-5.6);  // -5
console.log(~~"-1");  // -1
console.log(~~"0");   // 0
console.log(~~"1");   // 1
console.log(~~true);  // 1
console.log(~~false); // 0
console.log(~~('asdf'));    // 0
console.log(~~999999999999999999.999999999); // -1486618624

console.log(Math.floor(-1));    // -1
console.log(Math.floor(0));     // 0
console.log(Math.floor(1));     // 1
console.log(Math.floor(5.6));   // 5
console.log(Math.floor(-5.6));  // -6
console.log(Math.floor('-1'));  // -1
console.log(Math.floor('0'));   // 0
console.log(Math.floor('1'));   // 1
console.log(Math.floor(true));  // 1
console.log(Math.floor(false)); // 0
console.log(Math.floor('asdf'));    // NaN
console.log(Math.floor(999999999999999999.999999999)); // 1000000000000000000

~~ 이 더 빠르긴 하다.


정리

  • 음수 소수에서 Math.Floor()와 다른 결과를 반환한다.
  • ~~ 는 큰 값에선 작동하지 않는다.
  • 숫자만 반환한다.
  • 소수점을 버린다.

→ 가급적 Math.floor()를 쓰자.

profile
블로그 이사했습니다 🧳

0개의 댓글