본문 바로가기
JavaScript/모던 자바스크립트 딥다이브

[JS] Math

by 김춘삼씨의 고양이 2024. 7. 19.

📌 표준 빌트인 객체 Math

  • Math는 수학적 상수와 함수를 위한 프로퍼티와 메서드를 제공함
  • Math는 생성자 함수가 아니기 때문에 정적 프로퍼티와 정적 메서드만 제공함

 

📌 Math 프로퍼티

Math.PI

  • 원주율 PI 값 (π ≈ 3.141592653589793)을 반환함
Math.PI; // -> 3.141592653589793

 

📌 Math 메서드

Math.abs

  • Math.abs 메서드는 인수로 전달된 숫자의 절대값을 반환함
  • 절대값은 반드시 0 또는 양수여야 함
Math.abs(-1); // -> 1
Math.abs(1); // -> 1

Math.abs(''); // -> 0
Math.abs([]); // -> 0
Math.abs(null); // -> 0

Math.abs(undefined); // -> NaN
Math.abs({}); // -> NaN
Math.abs('string'); // -> NaN
Math.abs(); // -> NaN

 

Math.round

  • Math.round 메서드는 인수로 전달된 숫자의 소수점 이하를 반올림한 정수를 반환함
Math.round(1.4); // -> 1
Math.round(1.6); // -> 2

Math.round(-1.4); // -> -1
Math.round(-1.6); // -> -2

Math.round(1); // -> 1
Math.round(); // -> NaN

 

Math.ceil

  • Math.ceil 메서드는 인수로 전달된 숫자의 소수점 이하를 올림한 정수를 반환함
Math.ceil(1.4); // -> 2
Math.ceil(1.6); // -> 2

Math.ceil(-1.4); // -> -1
Math.ceil(-1.6); // -> -1

Math.ceil(1); // -> 1
Math.ceil(); // -> NaN

 

Math.floor

  • Math.floor 메서드는 인수로 전달된 숫자의 소수점 이하를 내림한 정수를 반환함
  • 소수점 이하를 내림하면 더 작은 정수가 됨
Math.floor(1.9); // -> 1
Math.floor(9.1); // -> 9

Math.floor(-1.9); // -> -2
Math.floor(-9.1); // -> -10

Math.floor(1); // -> 1
Math.floor(); // -> NaN

 

Math.sqrt

  • 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

 

Math.random

  • Math.random 메서드는 임의의 난수(랜덤 숫자)를 반환함
  • Math.random 메서드가 반환한 난수는 0에서 1 미만의 실수임 (0은 포함되지만 1은 포함되지 않음)
Math.random(); // 0에서 1 미만의 랜덤 실수(0.6544863387481861)

/*
 1에서 10 범위의 랜덤 정수 취득
 1) Math.random으로 0에서 1 미만의 랜덤 실수를 구한 다음, 10을 곱해 0에서 10 미만의 랜덤 실수를 구함
 2) 0에서 10 미만의 랜덤 실수에 1을 더해 1에서 10 범위의 랜덤 실수를 구함
 3) Math.floor로 1에서 10 범위의 랜덤 실수의 소수점 이하를 떼어 버린 다음 정수를 반환함
*/
const random = Math.floor((Math.random() * 10) + 1);
console.log(random); // 1에서 10 범위의 랜덤 정수(6)

 

Math.pow

  • Math.pow 메서드는 첫 번째 인수(base)를 밑으로, 두 번째 인수를 지수(exponent)로 거듭제곱한 결과를 반환함
Math.pow(2, 8); // -> 256

Math.pow(2, -1); // -> 0.5

Math.pow(2); // -> NaN

Math.pow(); // -> NaN

 

Math.max

  • Math.max 메서드는 전달받은 인수 중에서 가장 큰 수를 반환함
  • 인수가 전달되지 않으면 -Infinity를 반환함
  • 배열을 인수로 전달받아 배열의 요소 중에서 최대값을 구하려면 Function.prototype.apply 메서드 또는 스프레드 문법(...)을 사용해야 함
Math.max(1); // -> 1
Math.max(1, 2); // -> 2
Math.max(1, 2, 3); // -> 3
Math.max(); // -> -Infinity

// Function.prototype.apply 메서드 사용
Math.max.apply(null, [1, 2, 3]); // -> 3
// ES6 스프레드 문법 사용
Math.max(...[1, 2, 3]); // -> 3

 

Math.min

  • Math.min 메서드는 전달받은 인수 중에서 가장 작은 수를 반환함
  • 인수가 전달되지 않으면 Infinity를 반환함
  • 배열을 인수로 전달받아 배열의 요소 중에서 최소값을 구하려면 Function.prototype.apply 메서드 또는 스프레드 문법(...)을 사용해야 함
Math.min(1); // -> 1
Math.min(1, 2); // -> 1
Math.min(1, 2, 3); // -> 1
Math.min(); // -> Infinity

// Function.prototype.apply 메서드 사용
Math.min.apply(null, [1, 2, 3]); // -> 1
// ES6 스프레드 문법 사용
Math.min(...[1, 2, 3]); // -> 1

 

 

 

참고문헌 및 출처 : 모던 자바스크립트 Deep Dive (이웅모)

'JavaScript > 모던 자바스크립트 딥다이브' 카테고리의 다른 글

[JS] RegExp  (4) 2024.07.22
[JS] Date  (0) 2024.07.22
[JS] Number  (0) 2024.07.17
[JS] 배열  (0) 2024.07.10
[JS] ES6 함수의 추가 기능  (0) 2024.07.01

댓글