예전에 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가 더 빠르다.
~~
연산자를 알게 되었는데, 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
~~
이 더 빠르긴 하다.
~~
는 큰 값에선 작동하지 않는다.