[프로그래머스] 두 수의 나눗셈 (Math.floor, Math.trunc

조아연·2024년 6월 19일

JavaScript 공부

목록 보기
5/24

JavaScript 코딩테스트 7일차

두 수의 나눗셈

그냥 나누는게 끝이 아니군
나눈 갚에 정수로 * 1000이다.

정수로 출력해줄 수 있는 함수를 넣어줘야 한다.

3일차 몫 구하기에서 배웠던 함수를 넣어줬다.

Math.floor

function solution(num1, num2) {
    var answer = 0;
    answer = num1 / num2 * 1000
    return Math.floor(answer);
}

계산 다 한 다음에 마지막에 리턴 시킬 값을 정수로 리턴시키겠다 라고 하면 답이 잘나오더라!
Math.floor를 num1/num2 나누는 요 서식에 넣어버리면 오류가 나더라.
그러면 Math.floor는 맨 마지막에 답을 호출시킬 때, 숫자의 형식을 정하는거라 마지막에 쓰는게 맞는거구나!

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

Math.trunc()는 소수점 이하는 다 버린다.

ex) Math.trunc(23.3) = 23, Math.trunc(-23.3) = -23

Math.floor()는 소수점을 내림한다.

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는 소수점을 만났을 때 소수점 부분을 버린 정수값만 반환합니다.
양수일 때는 이 부분이 눈에 띄지 않지만 음수일 경우 같은 수에도 다른 결괏값이 나올 수 있으므로 주의해야 합니다.

깨달은 점

  • Math.trunc()는 소수점 이하는 다 버린다.
  • Math.floor()는 소수점을 내림한다.
  • ~~ 틸트 연산자는 double tilde: not의 기능을 하는 비트 연산자이다.
  • parseInt는 소수점을 만났을 때 소수점 부분을 버린 정수값만 반환한다.
profile
비전공자 QA의 자기개발 공부노트

0개의 댓글