[모던 자바스크립트 Deep Dive] - (9) Math

JIN·2024년 11월 19일
post-thumbnail

Math

Math는 자바스크립트에서 수학 계산과 관련된 상수함수를 제공하는 표준 내장 객체입니다.생성자가 없는 정적(static) 객체이기 때문에 인스턴스화하지 않고 바로 사용 가능합니다.

Math 객체는 숫자 계산을 보다 효율적이고 간편하게 수행할 수 있도록 다양한 프로퍼티와 메서드를 제공하는데요, 어떻게 활용이 가능할까요??

Math 프로퍼티: 상수값으로 고정된 데이터를 제공 (ex. Math.PI)
Math 메서드: 숫자 계산 관련 다양한 연산을 수행하는 함수 (ex. Math.abs(), Math.random())

Math 프로퍼티

Math.PI는 원주율 PI값 (π ≈ 3.141592653589793)을 반환합니다.

const pie = Math.PI
console.log(pie) // 3.141592653589793

Math 메서드

1. 절대값
Math.abs 메서드는 전달된 숫자의 절대값(0 또는 양수)을 반환합니다. 인수에 따라서는 NaN이 반환 될 수도 있습니다.

Math.abs(-1); // 1
Math.abs('-1'); // 1 (문자열 숫자는 숫자로 변환)
Math.abs(''); // 0
Math.abs([]); // 0 (빈 배열은 숫자 0으로 변환)
Math.abs(null); // 0
Math.abs(undefined); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN

2. 반올림
Math.round 메서드는 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환합니다.

Math.round(1.4); // 1
Math.round(1.7); // 2
Math.round(-1.4); // -1
Math.round(-1.7); // -2
Math.round(1); // 1
Math.round(); // NaN

3. 올림
Math.ceil 메서드는 인수로 전달된 숫자의 소수점 이하를 올림한 정수를 반환합니다.

Math.ceil(1.4); // 2
Math.ceil(1.7); // 2
Math.ceil(-1.4); // -1
Math.ceil(-1.7); // -1
Math.ceil(1); // 1
Math.ceil(); // NaN

4. 내림
Math.floor 메서드는 인수로 전달된 숫자의 소수점 이하를 내림한 정수를 반환하며 Math.ceil 메서드와는 반대되는 값이 나옵니다.

Math.floor(1.9); // 1 (소수점 이하 버리고 1로 내림)
Math.floor(9.1); // 9
Math.floor(-1.9); // -2 (소수점 이하 버리고 -2로 내림)
Math.floor(-9.1); // -10 
Math.floor(1); // 1
Math.floor(); // NaN

5. 제곱근
Math.sqrt 메서드는 인수로 전달된 숫자의 제곱근을 반환합니다.

Math.sqrt(9); // 3
Math.sqrt(-9); // NaN (음수는 제곱근이 없음)
Math.sqrt(2); // 1.4142135623730951
Math.sqrt(1); // 1
Math.sqrt(0); // 0
Math.sqrt(); // NaN

6. 랜덤 숫자
Math.random 메서드는 0 이상 1 미만의 난수(실수)를 반환합니다. 만약 1이상 10이하의 랜덤 숫자를 반환하고 싶으면 아래와 같이 사용이 가능합니다.

Math.random(); // 0에서 1미만의 랜덤 실수

const random = Math.floor((Math.random() * 10) + 1);
console.log(random); // 1 ~ 10범위의 정수

7. 거듭제곱
Math.pow 메서드는 첫번째 인수를 밑으로 두번째 인수를 지수거듭제곱한 결과를 반환합니다. 거듭제곱의 경우 ** 연산자를 통해 동일한 결과를 반환할 수 있습니다.

Math.pow(2, 8); // 256 -> 2⁸
Math.pow(2, -1); // 0.5 -> 2⁻¹ 
Math.pow(2); // NaN

2 ** 8; // 256

8. 최대값/최소값
Math.max 메서드는 전달받은 인수 중에서 가장 큰 수를 반환합니다. 만약 인수가 전달되지 않으면 -Infinity를 반환하게 됩니다.

Math.max(1); // 1
Math.max(1, 2); // 2
Math.max(); // -Infinity

Math.min 메서드는 전달받은 인수 중에서 가장 작은 수를 반환합니다. 만약 인수가 전달되지 않으면Infinity를 반환하게 됩니다.

Math.min(1); // 1
Math.min(1, 2); // 1
Math.min(); // Infinity

배열을 인수로 전달받아 배열의 요소중에 최대값을 구하기 위해서는 스프레드 문법을 사용하여 목록으로 만든 후 가능합니다.

Math.max(...[1,2,3]); // 3

Math.min(...[1,2,3]); // 1

⭐️ 마무리

Math 객체는 숫자 계산과 관련된 다양한 기능을 제공하여, 복잡한 수학 연산을 간단하고 효율적으로 처리할 수 있게 도와줍니다.

아래와 같이 최고 점수를 구하는 상황에서도 Math의 메서드를 활용한다면 쉽게 구현이 가능하기도 합니다.

const scores = [88, 92, 75, 91, 85];
const maxScore = Math.max(...scores);
console.log(`최고 점수는 ${maxScore}점입니다.`); // 최고 점수는 92점입니다.

더 많은 Math의 메서드는 MDN Web Docs에서도 확인이 가능하니 Math를 적극적으로 활용해봅시다!!! 😊


출처: 모던 자바스크립트 Deep Dive 29장 Math (561p ~ 565p)


profile
MAXIMUM EFFORT 🙃

0개의 댓글