
JavaScript의 Math 객체는 수학 계산을 위한 내장 객체로, 다양한 상수와 메서드 제공. 정적(static) 객체로, 인스턴스 생성 없이 바로 사용 가능. Math.PI나 Math.abs()와 같이 모든 속성과 메서드는 정적으로 직접 호출됨.
Math는 자바스크립트 엔진에 기본적으로 포함되어 있어 별도의 정의 없이 바로 사용 가능Math 객체의 모든 메서드와 속성은 객체명과 함께 호출. 예: Math.PI나 Math.sqrt()와 같은 방식으로 호출Math 객체의 상수들은 읽기 전용(read-only)으로 설정되어 수정 불가읽기 전용 속성의 이유
Math.PI, Math.E)는 정확한 값을 유지해야 하므로 변경되지 않도록 설정됨예시: Math.PI는 변경 불가능. 값을 변경하려고 시도해도 원래의 값을 그대로 유지함:
Math.PI = 3.14; // 변경 시도
console.log(Math.PI); // 3.141592653589793 (변경되지 않음)
사용빈도 높음 ⭐️
알고리즘 💻
설명: 원주율 π의 값을 반환합니다.
console.log(Math.PI); // 3.141592653589793
주어진 수의 절댓값 반환
절대값: 어떤 수의 크기를 나타내는 양수 값. 음수의 경우 부호 제거한 값. 예: -5의 절대값은 5
console.log(Math.abs(-5)); // 5
주어진 수보다 크거나 같은 정수 중 가장 작은 값 반환 (올림)
console.log(Math.ceil(4.2)); // 5
주어진 수보다 작거나 같은 정수 중 가장 큰 값 반환 (내림)
console.log(Math.floor(4.8)); // 4
주어진 수를 반올림하여 가장 가까운 정수 반환
console.log(Math.round(4.5)); // 5
0 이상 1 미만의 난수(무작위 실수) 반환
console.log(Math.random()); // 예: 0.123456789
응용 랜덤의 수를 뽑을 때 사용
// 1부터 6까지의 랜덤한 주사위 눈금 뽑기
function rollDice() {
return Math.floor(Math.random() * 6) + 1;
}
console.log(rollDice()); // 1에서 6 사이의 랜덤한 정수 출력
주어진 숫자의 거듭제곱 반환
console.log(Math.pow(2, 3)); // 8
응용: 원의 면적 계산
function getCircleArea(radius) {
return Math.PI * Math.pow(radius, 2);
}
console.log(getCircleArea(5)); // 78.53981633974483
주어진 인수 중에서 가장 큰 값 반환
console.log(Math.max(1, 3, 2)); // 3
주어진 인수 중에서 가장 작은 값 반환
console.log(Math.min(1, 3, 2)); // 1
주어진 수의 제곱근 반환
console.log(Math.sqrt(16)); // 4
console.log(Math.sqrt(10)); // 3.1622776601683795
각도를 라디안으로 받아 삼각 함수 반환
console.log(Math.sin(Math.PI / 2)); // 1
console.log(Math.cos(0)); // 1
console.log(Math.tan(Math.PI / 4)); // 1
피타고라스 정의 예제
// 피타고라스 정리를 사용한 빗변 길이 계산
function calculateHypotenuse(a, b) {
return Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
}
console.log(calculateHypotenuse(3, 4)); // 출력: 5
console.log(calculateHypotenuse(5, 12)); // 출력: 13
이 코드는 피타고라스 정리를 사용하여 직각삼각형의 빗변 길이를 계산. Math.pow()로 제곱을 계산하고, Math.sqrt()로 제곱근을 구함
Math.random()은 매 호출마다 다른 값을 반환하지만, 완전한 무작위성을 보장하지 않으므로 보안 목적에는 적합하지 않음Math 메서드는 입력값이 숫자가 아닐 경우 NaN을 반환할 수 있으니 입력값을 미리 확인하는 것이 좋음📚 자세한 건 MDN 공식 문서 참고