JavaScript 코딩테스트 7일차

그냥 나누는게 끝이 아니군
나눈 갚에 정수로 * 1000이다.
정수로 출력해줄 수 있는 함수를 넣어줘야 한다.
3일차 몫 구하기에서 배웠던 함수를 넣어줬다.
function solution(num1, num2) {
var answer = 0;
answer = num1 / num2 * 1000
return Math.floor(answer);
}
계산 다 한 다음에 마지막에 리턴 시킬 값을 정수로 리턴시키겠다 라고 하면 답이 잘나오더라!
Math.floor를 num1/num2 나누는 요 서식에 넣어버리면 오류가 나더라.
그러면 Math.floor는 맨 마지막에 답을 호출시킬 때, 숫자의 형식을 정하는거라 마지막에 쓰는게 맞는거구나!

다 풀고나서 다른사람들 풀이를 보면서 하나 또 배웠다.

ex) Math.trunc(23.3) = 23, Math.trunc(-23.3) = -23
ex) Math.floor(23.3) = 23, Math.floor(-23.3) = -24가 된다.
음수인 경우도 생각해서 소수점을 이하 수를 없애고 싶을때는 Math.trunc를 사용하는 것이 좋다.

틸트 연산자에 대한 상세한 설명도 있었는데,, 아직까지 이해하긴 어렵다.
double tilde: not의 기능을 하는 비트 연산자이다.
10진수 5(16비트 2진수 0000000000000100)에 tilde를 적용하면 -6(16비트 2진수 1111111111111011) 이며 이 과정에서 소수점은 버려지게 된다.
-6에 다시 tilde를 적용하면(double tilde, ~~5라고 표기) 다시 정수 5로 돌아오게 되어 결과적으로 Math.floor()와 같은 기능을 하게 된다.
이는 특정 브라우저에서 Math.floor()나 parseInt보다 빠른 퍼포먼스를 보여줄 수 있으나, 유지보수하는 사람의 입자에서 문맥의 이해에 어려움이 있을수 있다.

Math.floor 와 parseInt의 차이점도 정확하게 봤다.
Math.floor는 소수점을 만났을 때 '내림'한 정수값을 반환하고 parseInt는 소수점을 만났을 때 소수점 부분을 버린 정수값만 반환합니다.
양수일 때는 이 부분이 눈에 띄지 않지만 음수일 경우 같은 수에도 다른 결괏값이 나올 수 있으므로 주의해야 합니다.