궁금해진 이유!
// 문제 설명 정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
최근 코딩테스트를 입문하면서 해당 문제를 풀게 되었다.
num1에서 num2를 나눈 후 소수점을 버려주기 위해,Math.floor()
라는 메서드로 소수점을 내림.function solution(num1, num2) { let answer = Math.floor(num1 / num2 * 1000); return answer; }
위처럼 풀고 통과까지 되어서 다른사람 코드를 보다가
Math.trunc()
를 사용한 것을 보고 메서드를 알게 되었다.return Math.trunc(num1 / num2 * 1000);
Math.floor()
Math.floor()
메서드는 주어진 숫자를 이하의 가장 큰 정수로 내림한다.
Math.floor(4.9) // 4를 반환.
Math.floor(-4.9) // -5를 반환.
Math.trunc()
Math.trunc()
메서드는 주어진 숫자의 소수 부분을 버린다.
Math.trunc(4.9) // 4를 반환.
Math.trunc(-4.9) // -4를 반환.
~~ 연산자
~~ 연산자
는 비트 연산자 중 하나로, 주어진 숫자를 32비트 정수로 변환한 다음 다시 32비트 정수로 반환.
~~
를 사용하면 주어진 숫자의 소수 부분은 삭제되고 정수 부분만 남는다.~~ 연산자
는 주로 성능 최적화를 위해 사용되며, 정수 부분만을 빠르게 추출할 수 있다.사용 사례
정수 부분만을 빠르게 추출해야 할 때, 성능을 고려하는 경우 ~~
를 사용.
그러나 음수의 경우 주의가 필요하며 결과가 Math.trunc()
와 다를 수 있다.
~~4.9; // 4를 반환.
~~(-4.9); // -4를 반환. (주의: 결과가 Math.trunc()와 다를 수 있음)
❗앞서 풀었던 문제같은 경우에는 소수점을 버리면 되는 문제라
Math.trunc()
메서드가 적합!
따라서, 주어진 숫자에 따라 두 메서드의 반환 값이 다를 수 있으며, 주로 사용하는 상황에 따라 선택할 수 있다.
Math.trunc()
는 소수 부분을 버린 결과가 필요한 경우에 유용하며,Math.floor()
는 항상 내림 결과를 얻고자 할 때 사용.+
Math.trunc()
는 숫자의 정수 부분을 안전하게 추출할 때 사용하며, ~~
는 성능을 개선하고 싶을 때나 정수 부분만을 필요로 할 때 사용.
~~
를 사용할 때 음수 값에 대한 예상치 못한 동작에 주의.출처