귀여운 눈높이에서 작성된, 🐰

하루 한 걸음씩, 성장 하는 중 입니다 🫶🏻

Studying/JavaScript

자바스크립트 공부하기 - 빌트인 (내장객체) Math

creamymood 2025. 3. 23. 00:30

어렵지만 하나하나 이해해가며 쌓는 성취감! 


자바스크립트에서의 Math는 수학적 계산을 도와주는 빌트인 객체.

이 객체에는 숫자와 관련된 여러 가지 유용한 기능들이 들어 있어 !

쉽게 말하면, Math는 자바스크립트에서 수학 문제를 풀 때 사용할 수 있는 도구들이 모여있는 수학 도구 상자와 같아 :)


1. Math 객체의 개념

Math는 자바스크립트에서 내장 객체(Built-in Object)로, 별도로 선언하지 않고 바로 사용할 수 있어.

이 객체에는 수학적 계산을 위한 함수와 상수들이 포함되어 있어요.

예시: 

Math.random() // 0과 1 사이의 난수를 생성
Math.PI      // 원주율 3.14159...
Math.pow(2, 3) // 2의 3승 (2 * 2 * 2)

 

let randomNumber = Math.random();  // 0 이상 1 미만의 난수 생성
console.log(randomNumber);  // 예: 0.7324

Math 객체는 자바스크립트에서 내장 객체이기 때문에, 그냥 Math.함수() 형식으로 바로 사용할 수 있습니다.

예를 들어, Math.random()처럼 Math 객체의 메소드를 직접 호출하면 됩니다.

중요한 점

  • Math 객체는 생성자 함수가 아니기 때문에, new Math()처럼 객체를 생성할 필요는 없어요.
  • Math는 전역 객체로 바로 사용이 가능하며, 메소드들을 직접 호출해서 사용할 수 있습니다.

따라서, Math.random(), Math.abs(), Math.ceil() 등의 메소드도 직접 Math.메소드명() 형식으로 바로 호출하시면 됩니다.


2. 주요 하위 개념

  1. 상수 (Constants)
    • Math.PI: 원주율 (약 3.14159...)
    • Math.E: 자연상수 (약 2.71828...)
    비유: Math.PI는 원을 그릴 때 항상 필요한 원주율과 같아요. 마치 "원"이라는 도형을 그리려면 항상 필요하죠!
  2. 수학적 함수들
    • Math.abs(x): 숫자의 절대값 (예: -5의 절대값은 5)
    • Math.ceil(x): 소수점을 올림 (예: 3.2는 4로 변환)
    • Math.floor(x): 소수점을 내림 (예: 3.8은 3으로 변환)
    • Math.round(x): 반올림 (예: 3.6은 4로 변환)
    • Math.max(x, y, z): 가장 큰 값 (예: 2, 5, 1 중에서 5)
    • Math.min(x, y, z): 가장 작은 값 (예: 2, 5, 1 중에서 1)
    비유:
    • Math.abs(x)는 "주머니에서 동전이 떨어졌을 때, 위로 향한 면을 기준으로 동전이 얼마나 떨어졌는지" 계산하는 것과 비슷해요.
    • Math.ceil(x)는 "여행지까지 가는 길이 3.2시간이라면, 딱 맞춰서 4시간이 걸린다고 보는 것"과 같죠.
  3. 난수 생성
    • Math.random(): 0 이상 1 미만의 임의의 난수를 생성합니다.
    • Math.floor(Math.random() * 10): 0부터 9까지의 정수 난수 생성
    비유: Math.random()은 "복권 번호를 무작위로 뽑는 것"과 같아요!
  4. 거듭제곱과 제곱근
    • Math.pow(x, y): x의 y 승 (예: 2의 3승은 8)
    • Math.sqrt(x): x의 제곱근 (예: 9의 제곱근은 3)
    비유:
    • Math.pow(x, y)는 "돈을 모은다고 생각할 때, 한 번에 모은 돈이 계속 증가하는 것" 같아요.
    • Math.sqrt(x)는 "사각형의 넓이가 주어졌을 때, 한 변의 길이를 구하는 것"과 같아요.
  5. 삼각 함수
    • Math.sin(x): x의 사인 값
    • Math.cos(x): x의 코사인 값
    • Math.tan(x): x의 탄젠트 값
    비유: 삼각 함수는 "눈에 보이는 그림을 그릴 때, 좌표축에 맞춰 각도나 길이를 계산하는" 것과 비슷해요!

실무에서는 어떻게 쓰일까 ?

 

1. 코드에서의 사용 예시

1.1. 난수 생성

자주 사용하는 Math.random() 함수는 난수를 생성할 때 유용합니다.

예를 들어, 게임에서 아이템 랜덤 획득이나 UI에서 랜덤 효과를 적용할 때 사용될 수 있어요.

// 0과 1 사이의 난수 생성
const randomNum = Math.random();
console.log(randomNum);  // 예: 0.8565

// 1부터 100 사이의 난수 생성
const randomInt = Math.floor(Math.random() * 100) + 1;
console.log(randomInt);  // 예: 73

 

1.2. 반올림 또는 내림

가격 계산, 예를 들어 상점의 할인 가격 계산에서 Math.round(), Math.ceil(), Math.floor()를 자주 사용해요.

// 상품 가격 할인 후 반올림
let price = 19.99;
let discountedPrice = price * 0.8; // 20% 할인
console.log(Math.round(discountedPrice)); // 16

// 배송비 계산에서 올림 처리 (올림이 필요한 경우)
let weight = 3.2; // 3.2kg
let shippingCost = Math.ceil(weight) * 10;  // 1kg당 10원
console.log(shippingCost); // 40원

 

 

1.3. 최댓값, 최솟값 구하기

Math.max()와 Math.min()은 여러 값 중에서 최댓값이나 최솟값을 찾을 때 사용됩니다.

예를 들어, 비밀번호 길이 제한 또는 배열에서 가장 큰 값 찾기에 유용해요

// 여러 학생 점수 중 최고점과 최저점 찾기
let scores = [88, 92, 75, 68, 85];
let maxScore = Math.max(...scores);  // 최고 점수
let minScore = Math.min(...scores);  // 최저 점수
console.log(`최고 점수: ${maxScore}, 최저 점수: ${minScore}`);

2. 실무에서의 활용 예시

2.1. 쇼핑몰에서 가격 처리

쇼핑몰 웹사이트에서 가격 계산시, 가격을 반올림하거나 내림하여 표시합니다.

// 예시: 상품 가격이 19.99원이면, 20원으로 반올림하여 표시
const productPrice = 19.99;
const roundedPrice = Math.round(productPrice);
console.log(`상품 가격은 ${roundedPrice}원입니다.`);

 

 

2.2. 게임에서 난수 사용 (아이템 드랍)

게임에서 아이템을 랜덤으로 드롭할 때, 아이템 드랍 확률을 Math.random()으로 처리할 수 있습니다.

// 예시: 0.1 확률로 특별 아이템을 드랍
const dropChance = Math.random();
if (dropChance < 0.1) {
  console.log("특별 아이템 드랍!");
} else {
  console.log("일반 아이템 드랍.");
}

 

 

2.3. 설문조사에서 응답 선택

설문조사에서 무작위 응답자 선택을 위해 난수를 사용할 수 있습니다.

const respondents = ["홍길동", "김철수", "이영희", "박민수", "조하나"];
const randomIndex = Math.floor(Math.random() * respondents.length);  // 0 ~ 4 사이의 정수
const selectedPerson = respondents[randomIndex];
console.log(`${selectedPerson}님이 선택되었습니다!`);

 

 

3. 실무에서 Math 객체를 쓸 때의 팁

  1. 성능 고려: Math.random() 같은 함수는 성능에 큰 영향을 미치지 않지만, 반복적으로 호출하거나 수백만 번의 계산이 필요한 경우 성능을 최적화할 수 있는 방법을 고려해야 합니다.
  2. 랜덤 값의 신뢰성: Math.random()은 완전히 무작위는 아니기 때문에, 암호학적으로 안전한 난수를 생성하려면 crypto.getRandomValues()와 같은 API를 사용해야 할 수 있습니다.
  3. 범위 벗어난 값 처리: Math.min()과 Math.max()는 유효하지 않은 값이 있을 때 -Infinity 또는 Infinity를 반환할 수 있으므로 이를 처리하는 로직이 필요할 수 있습니다.

이와 같이 Math 객체는 코드에서 계산을 효율적으로 처리할 수 있게 도와주는 중요한 도구로, 다양한 실무 환경에서도 사용됩니다!


예시 코드를 알아보자 !

// 0과 1 사이의 랜덤 숫자
const randomNumber = Math.random();
console.log(randomNumber);  // 예: 0.5678

// 절대값
const absValue = Math.abs(-10);
console.log(absValue);  // 10

// 올림
const ceilValue = Math.ceil(4.1);
console.log(ceilValue);  // 5

// 내림
const floorValue = Math.floor(4.9);
console.log(floorValue);  // 4

// 반올림
const roundValue = Math.round(5.5);
console.log(roundValue);  // 6

// 최대값
const maxValue = Math.max(10, 20, 30);
console.log(maxValue);  // 30

// 최소값
const minValue = Math.min(10, 20, 30);
console.log(minValue);  // 10

// 거듭제곱
const powValue = Math.pow(3, 2);
console.log(powValue);  // 9

// 제곱근
const sqrtValue = Math.sqrt(16);
console.log(sqrtValue);  // 4

// 원주율
const piValue = Math.PI;
console.log(piValue);  // 3.141592653589793