자바스크립트의 Math 객체는 다른 객체와 달리 생성자(Constructor)가 아닙니다.
따라서 new Math()처럼 인스턴스를 생성하지 않고, 객체 고유의 프로퍼티와 메소드를 직접 호출하여 사용합니다.
수학적 계산과 데이터 처리에 자주 쓰이는 Math 객체의 중요 메소드를 5가지 카테고리로 나누어 정리해 드리겠습니다.
1. 올림·내림·반올림 (소수점 처리)
실수를 정수로 변환하거나 소수점을 처리할 때 가장 빈번하게 사용됩니다.
- Math.ceil(x): 올림
- 인수보다 크거나 같은 수 중 가장 작은 정수를 반환합니다.
- Math.floor(x): 내림
- 인수보다 작거나 같은 수 중 가장 큰 정수를 반환합니다. (음수 처리 시 주의 필요)
- Math.round(x): 반올림
- 소수점 첫째 자리에서 반올림합니다.
- Math.trunc(x): 소수점 아래 버림
- 소수점 이하는 무조건 무시하고 정수 부분만 남깁니다. (ES6+)
Math.ceil(4.2); // 5
Math.floor(4.7); // 4
Math.round(4.5); // 5
Math.trunc(4.9); // 4
// 음수일 때의 차이점
Math.floor(-4.2); // -5 (더 작은 정수로 내려감)
Math.trunc(-4.2); // -4 (소수점만 버림)
자바스크립트에서 Math.ceil()과 Math.round()는 모두 소수점을 처리하는 함수이지만, 숫자를 올릴 것인가, 아니면 반올림할 것인가의 차이가 있습니다.
💡 한 줄 요약
Math.ceil(): 올림 (소수점 자리에 숫자가 있으면 무조건 다음 큰 정수로 올림)Math.round(): 반올림 (소수점 첫째 자리가 5 이상이면 올림, 4 이하이면 버림)
🔍 자세히 알아보기
1. Math.ceil() — 올림 (Ceiling: 천장)
ceil은 천장을 뜻하는 단어입니다.
말 그대로 숫자를 천장 방향(더 큰 정수)으로 끌어올린다고 생각하시면 됩니다.
소수점 아래에 0이 아닌 숫자가 조금이라도 있다면, 무조건 무조건 올림을 합니다.
Math.ceil(4.1) ➡️ 5
Math.ceil(4.9) ➡️ 5
Math.ceil(4.0) ➡️ 4 (소수점이 없으므로 그대로)
⚠️ 음수일 때 주의하세요! 음수에서 '더 큰 정수'는 0에 가까운 숫자입니다.
Math.ceil(-4.9) ➡️ -4 (-4가 -5보다 크기 때문)
2. Math.round() — 반올림 (Round)
우리가 수학 시간에 배운 가장 일반적인 반올림입니다.
소수점 첫째 자리의 숫자가 0.5 이상이면 올림, 0.5 미만이면 버림을 합니다.
Math.round(4.4) ➡️ 4 (0.4는 버림)
Math.round(4.5) ➡️ 5 (0.5는 올림)
Math.round(4.6) ➡️ 5 (0.6은 올림)
⚠️ 음수일 때 주의하세요! 반올림 역시 더 큰 숫자를 기준으로 움직입니다.
정확히 0.5로 끝나는 음수는 더 큰 정수 방향(0에 가까운 쪽)으로 반올림됩니다.
Math.round(-4.5) ➡️ -4 (-4가 -5보다 크기 때문)
Math.round(-4.51) ➡️ -5
Math.floor()와 Math.trunc()는 둘 다 소수점을 없애고 정수를 반환한다는 점에서 비슷해 보이지만, 음수를 다룰 때 결정적인 차이가 발생합니다.
💡 한 줄 요약
Math.floor(): 내림 (무조건 더 작은 정수로 내려감 ➡️ 수직선에서 왼쪽 이동)
Math.trunc(): 버림 (소수점 아래를 그냥 잘라버림 ➡️ 수직선에서 0을 향해 이동)
🔍 자세히 알아보기
1. Math.floor() — 내림 (Floor: 바닥)
floor는 바닥을 뜻합니다.
숫자를 바닥 방향(더 작은 정수)으로 끌어내립니다.
양수일 때는 소수점을 잘라내는 것과 같지만, 음수일 때는 숫자가 더 작아져야 하므로 주의해야 합니다.
Math.floor(4.9) ➡️ 4
Math.floor(-4.1) ➡️ -5 (수직선에서 -4보다 -5가 더 작기 때문에 밑으로 내려감)
2. Math.trunc() — 버림 (Truncate: 자르다)
trunc는 '잘라내다'라는 뜻을 가집니다.
소수점 아래에 어떤 숫자가 있든 상관없이 그냥 가위로 싹둑 잘라버리고 정수 부분만 남깁니다.
양수든 음수든 상관없이 오직 소수점 아래만 지우기 때문에, 결과적으로 0을 향해 이동하게 됩니다.
Math.trunc(4.9) ➡️ 4
Math.trunc(-4.1) ➡️ -4 (소수점 .1을 그냥 잘라버림)
📍 수직선으로 차이 이해하기
양수에서는 두 함수의 결과가 같지만, 음수 영역에서는 수직선 상에서 움직이는 방향이 다릅니다.
Math.floor(-4.1)은 더 작은 정수인 왼쪽(-5)으로 이동합니다.Math.trunc(-4.1)은 소수점을 버리고 0과 가까운 오른쪽(-4)으로 이동합니다.
2. 난수 생성 (Random)
- Math.random(): 무작위 임의의 수 생성
- $0$ 이상 $1$ 미만($0 \le x < 1$)의 부동소수점 의사 난수를 반환합니다.
💡 실무 활용: 특정 범위의 정수 난수 구하기
Math.random()과 Math.floor()를 조합하면 원하는 범위의 무작위 정수를 만들 수 있습니다.
// 1부터 10까지의 무작위 정수 구하기
// 공식: Math.floor(Math.random() * 최댓값) + 최솟값
const randomNum = Math.floor(Math.random() * 10) + 1;
console.log(randomNum);
3. 최댓값·최솟값 검색
여러 개의 숫자 중 가장 큰 값이나 가장 작은 값을 찾아냅니다.
- Math.max(...x): 최댓값 반환
- Math.min(...x): 최솟값 반환
JavaScript
Math.max(1, 5, 10, -2); // 10
Math.min(1, 5, 10, -2); // -2
// 배열에서 최댓값/최솟값을 찾을 때는 스프레드 문법(...)을 활용합니다.
const numbers = [10, 20, 30, 40];
Math.max(...numbers); // 40
4. 절대값·제곱·루트 (수학 계산)
- Math.abs(x): 절대값 반환
- 수의 부호를 제거한 값을 반환합니다.
- Math.pow(base, exponent): 거듭제곱
- base를 exponent만큼 거듭제곱한 값을 반환합니다. (최신 JS에서는 거듭제곱 연산자 로 대체 가능)
- Math.sqrt(x): 제곱근(루트)
- 숫자의 양의 제곱근을 구합니다.
JavaScript
Math.abs(-5); // 5
Math.pow(2, 3); // 8 (2 ** 3 과 동일)
Math.sqrt(16); // 4
5. 부호 확인 (Sign)
- Math.sign(x): 숫자의 부호 판별 (ES6+)
- 값이 양수이면 1, 음수이면 -1, 0이면 0을 반환하여 숫자의 성격을 빠르게 파악할 수 있게 돕습니다.
JavaScript
Math.sign(25); // 1
Math.sign(-9); // -1
Math.sign(0); // 0
📋 Math 객체 중요 메소드 요약표
| 메소드 | 기능 | 예시 | 결과 |
| Math.ceil() | 소수점 올림 | Math.ceil(1.1) | 2 |
| Math.floor() | 소수점 내림 | Math.floor(1.9) | 1 |
| Math.round() | 소수점 반올림 | Math.round(1.5) | 2 |
| Math.random() | $0 \le x < 1$ 난수 생성 | Math.random() | 임의의 실수 |
| Math.max() | 전달받은 값 중 최댓값 | Math.max(3, 7, 5) | 7 |
| Math.abs() | 절대값 | Math.abs(-10) | 10 |
학습 정리
- 소수점을 다룰 때 양수 영역에서는 Math.floor()와 Math.trunc()가 같게 작동하지만, 음수 영역에서는 결과가 달라지므로 목적에 맞게 선택해야 합니다.
- 배열 데이터를 Math.max()나 Math.min()에 바로 넣으면 NaN이 반환되므로, 반드시 **...(Spread Operator)**를 사용해 배열을 펼쳐서 전달해야 합니다.
자바스크립트 알고리즘과 데이터 처리에 꼭 필요한 Math 객체의 핵심 메소드들을 마스터하셨습니다!

'JavaScript' 카테고리의 다른 글
| JavaScript JSON object method (0) | 2026.06.01 |
|---|---|
| JavaScript String object method (0) | 2026.06.01 |
| JavaScript Array method (0) | 2026.05.29 |
| JavaScript variables life cycle (0) | 2026.05.04 |
| javascript:void(0); (0) | 2026.03.26 |