[ JS ] Math.floor vs Math.trunc

Jaehyun Ahn·2023년 1월 3일
0
post-thumbnail

프로그래머스 문제를 풀다가 JavaScript에서 이미 알고 있었던 Math.floor와 비슷한 매서드인 Math.trunc를 알게 됐고 , 이 둘의 차이점에 대해 알아보고 싶어서 작성한 포스트이다.

1. Math.trunc를 알게 된 계기

프로그래머스 - 두 수의 나눗셈


프로그래머스에서 '두 수의 나눗셈' 문제를 해결 한 후, 다른 사람이 짠 코드를 구경하다가 Math.trunc 라는 메서드를 처음 접하게 됐다.

#내가 작성 한 코드

const solution = (num1, num2) => Math.floor((num1 / num2) * 1000)

#다른 사람들의 풀이 중 Math.trunc 메서드가 사용 된 코드

function solution(num1, num2) {
    return Math.trunc(num1 / num2 * 1000);
}

num1과 num2를 나눈 값에 1000을 곱한 후, 정수 부분을 return 하는 문제였다.
나는 Math.floor를 사용하여 정수 부분을 뽑아냈는데, 몇몇 다른 사람들은 Math.trunc를 사용하여 정수 부분을 추출 한 것을 볼 수 있었다.

2. Math.floor vs Math.trunc

2.1 Math.floor

Math.floor()란 내림의 의미를 가지며 바닥까지 내린다고 생각하면 된다.

Math.floor(3.5) = 3
Math.floor(3.87) = 3
Math.floor(-3.5) = -4
Math.floor(-3.14) = -4

2.2 Math.trunc

Math.turnc()란 소수점 이하는 다 버린다는 의미를 가진다.

Math.turnc(3.5) = 3
Math.turnc(3.87) = 3
Math.turnc(-3.5) = -3
Math.turnc(-3.14) = -3

3. 결론

Math.turnc()란 소수점 이하는 다 버리기 때문에 -23.3 음수인 경우에도 소수점 이하를 다 버린 형태인 -23을 return한다.
Math.floor()란 -23.3.인 경우에 내림을 하기 때문에 -24를 return한다
따라서 소수점 이하를 버릴 것인지, 수학적 계산이 필요한 경우를 판단하여 메서드를 사용하면 될 것 같다.

4. 부가적 내용

Math library엔 소수점과 관련된 메서드가 본문에서 말 한 Math.trunc(), Math.floor() 뿐만 아니라 Math.round()(반올림), Math.ceil()(천장까지 올림) 도 존재한다. 소수점 처리를 할 때, 상황에 맞게 Math 메서드를 활용하면 될 것 같다.

참고자료

https://velog.io/@sangmin-iam/TIL-Math.trunc-vs-Math.floor

profile
미래 프론트 어쩌고

0개의 댓글