:ledger: Math 객체란?

Math 객체는 수학적인 상수와 함수를 위한 내장 객체이다.
Math 객체는 생성자가 없으며, 정적 프로퍼티와 메서드로만 구성되어있다. 즉, Math 객체를 인스턴스화 하지 않고 수학적인 연산을 수행할 수 있다.

:one: Math 주요 메서드

:pushpin: 1-1) Math.abs(x)

주어진 숫자의 절대값을 반환한다.

  • 양수의 절대값은 그자체이다. ex) 10의 절대값은 10이다.
  • 음수의 절대값은 그 숫자의 양수 값이다. ex) -10 의 절대값은 10이다.
  • 0의 절대값은 0이다.
console.log(Math.abs(-1515)); // 1515

:pushpin: 1-2) Math.ceil(x)

주어진 숫자보다 크거나 같은 가장 작은 정수를 반환한다.

  • Math.ceil()은 항상 숫자를 반환하며 인자가 숫자가 아닌 경우 JavaScript 엔진에서는 자동으로 숫자로 변환한다.
  • Math.ceil()메서드는 소수점 이하 값을 올릴 때 유용하게 사용됨
console.log(Math.ceil(5.1)); // 6
console.log(Math.ceil(-5.1)); // -5
console.log(Math.ceil('rarrit')); // NaN

:pushpin: 1-3) Math.floor(x)

주어진 숫자보다 작거나 같은 가장 큰 정수를 반환한다.

  • Math.floor()은 항상 숫자를 반환하며 인자가 숫자가 아닌 경우 JavaScript 엔진에서는 자동으로 숫자로 변환한다.
  • Math.floor()메서드는 소수점 이하 값을 내릴 때 유용하게 사용됨. (Math.ceil() 반대 개념)
console.log(Math.floor(5.1)); // 5
console.log(Math.floor(-5.1)); // -6
console.log(Math.floor('rarrit')); // NaN

:pushpin: 1-4) Math.round(x)

주어진 숫자를 반올림한다.

  • 소수점의 숫자가 0.5 이상의 경우 올린다.
  • 소수점의 숫자가 0.5 미만일 경우 내린다.
console.log(Math.round(1.5)); // 2
console.log(Math.round(1.4)); // 1
console.log(Math.round(-1.5)); // -1
console.log(Math.round(-1.6)); // -2

:pushpin: 1-5) Math.max(value1, value2, ..., valueN)

주어진 숫자 중 가장 큰 값을 반환한다.

  • Math.max()는 인자로 최소 2개 이상의 숫자를 받아야 한다. 그렇지 않으면 NaN을 반환함.
  • 배열을 사용할 때는 배열 요소를 펼쳐서 전달해야함. ex) Math.max(...number)
  • Math.max()는 입력으로 받은 값 중 숫자 값만 고려하며, 다른 데이터 타입은 무시함.
console.log(Math.max(2,10,5,8,22,1)) // 22

// 변수로 사용
let a = 5, b = 15, c = 10;
console.log(Math.max(a, b, c)); // 15

// 배열로 사용
let numbers = [1,5,3,7,10,2]
console.log(Math.max(...numbers)); // 7

:pushpin: 1-6) Math.min(value1, value2, ..., valueN)

주어진 숫자 중 가장 작은 값을 반환한다.

  • Math.min()는 인자로 최소 2개 이상의 숫자를 받아야 한다. 그렇지 않으면 NaN을 반환함.
  • 배열을 사용할 때는 배열 요소를 펼쳐서 전달해야함. ex) Math.max(...number)
  • Math.min()는 입력으로 받은 값 중 숫자 값만 고려하며, 다른 데이터 타입은 무시함.
console.log(Math.min(2,10,5,8,22,1)) // 1

// 변수로 사용
let a = 5, b = 15, c = 10;
console.log(Math.min(a, b, c)); // 5

// 배열로 사용
let numbers = [1,5,3,7,10,2]
console.log(Math.min(...numbers)); // 1

:pushpin: 1-7) Math.pow(base, exponent)

주어진 숫자의 거듭제곱을 반환한다.

  • base : 거듭제곱의 밑이 되는 숫자이다.
  • exponent : 거듭제곱의 지수(승수)이다. 이 값은 정수여야한다.
  • Math.pow(base, exponent)baseexponent 제곱을 반환한다.
  • JavaScript에서 **연산자도 제곱 연산을 수행할 수 있음 ex) 2 ** 4 = 16 (2의 4승)
console.log(Math.pow(2, 4)) // 16 (2의 4승)
console.log(Mat.pow(5,2)) // 25 (5의 2승 =  의 제곱)
console.log(Mat.pow(9999,0)) // 1 (어떤 숫자든 0승은 항상 1이 반환됨)
console.log(Mat.pow(-2,4)) // 16 ((-2)의 4승)

:pushpin: 1-8) Math.sqrt(x)

주어진 숫자의 제곱근을 반환한다.

  • x는 제곱근을 구할 양수의 숫자이다. 음수를 인자로 전달받으면 NaN을 반환함
  • Math.sqrt()의 인자로는 숫자만 가능하며, 데이터 타입을 사용하면 자동으로 숫자로 반환된다.
console.log(Math.sqrt(9)) // 3 (9의 제곱근)
console.log(Mat.pow(81)) // 9 (81의 제곱근)
console.log(Mat.pow(25)) // 5 (25의 제곱근)
console.log(Mat.pow(0)) // 0 (0의 제곱근)
console.log(Mat.pow(-9999)) // NaN (음수의 경우 제곱근은 정의되지 않음)

:pushpin: 1-9) Math.random(x)

0이상 1미만의 난수를 반환한다.

  • Math.random()함수는 매번 호출할 때마다 새로운 무작위 숫자를 반환한다. 말 자체로 랜덤의 값임
  • 반환된 숫자는 0이상 1미만의 범위에 속하며, 1은 포함되지 않음
  • 만약 다른 범위의 난수가 필요하다면 값을 조정하면된다.
    • ex) 0~10사이 난수를 생성: Math.random() * 10
  • JavaScript에서 Math.random()함수를 이용하여 무작위로 순서를 섞거나 랜덤한 값을 할당하는 등 다양한 용도로 활용함
console.log(Math.random()); // 0 이상 1 미만의 임의의 숫자
console.log(Math.random() * 10); // 0 이상 10 미만의 임의의 숫자

// 원하는 범위의 숫자를 생성하는 수식
Math.floor(Math.random() * (max - min + 1)) + min
/*
  min: 원하는 범위의 최소값
  max: 원하는 범위의 최대값
*/

:pushpin: 1-10) Math.trunc(x)

주어진 숫자의 소수 부분을 제거하고 정수 부분만 반환한다.

  • Math.trunc()함수는 소수점 이하를 제거하는 것이며 반올림을 수행하지 않음 (음수에서도 0.5보다 작은수를 사용해도 내림 수행)
  • Math.trunc()함수는 ES6(ECMAScript 2015)에서 추가되어 이전 버전의 JavaScript에서는 사용못할 가능성이 있음
console.log(Math.trunc(2.9));   // 2 (소수점 이하를 제거하여 정수 부분만 반환)
console.log(Math.trunc(-3.1));  // -3 (음수의 경우에도 소수점 이하를 제거하고 정수 부분만 반환)
console.log(Math.trunc(0.5));   // 0 (소수점 이하가 0.5 이상이라도 내림하여 정수 부분만 반환)
console.log(Math.trunc(-0.5));  // -0 (소수점 이하가 -0.5 이상이라도 올림하여 정수 부분만 반환)
console.log(Math.trunc(0));     // 0 (정수는 그 자체로 반환)

:two: Math함수를 통한 예제

:pushpin: 2-1) 절대값을 구하기

변수 num의 값은 -10이다. 변수 num의 절대값을 구해보자

// Math.abs() 사용
let num = -10;
console.log(Math.abs(num)); // 10 

:pushpin: 2-2) 반올림, 올림, 내림

변수 num의 값은 1.7 이며 변수 num을 반올림,올림,내림을 구해보자

let num = 1.7;
console.log(Math.round(num)) // 2
console.log(Math.ceil(num)) // 2
console.log(Math.floor(num)) // 1

:pushpin: 2-3) 최대값과 최소값

변수 values에 [1,10,5,20,2] 값이 있다. 최대값과 최소값을 구해보자

let values = [1,10,5,20,2]
Math.max(...values); // 20 
Math.min(...values); // 1

:pushpin: 2-4) 거듭제곱근과 제곱근

  • 문제 01 : 변수 a의 값은 2, 변수 b의 값은 4이다. 거듭제곱근의 밑은 a 승수는 b 일경우의 값을 구해보자
  • 문제 02 : 변수 c의 값은 81이다. 변수 c의 제곱근을 구해보자
let a = 2, b = 4, c = 81;
console.log(Math.pow(2, 4)) // 16
console.log(Math.sqrt(81)) // 9

:pushpin: 2-5) 난수 생성

10이상 20사이의 랜덤한 숫자를 생성해보자

// Math.floor(Math.random() * (max - min + 1)) + min 
console.log(Math.floor(Math.random() * (20 - 10 + 1)) + 10)

:pushpin: 2-6) 소숫점 제거

변수 n의 값은 1.016546789 이다. 소수점을 제거해보자.

let n = 1.016546789;
console.log(Math.trunc(n)) // 1

:fire: 마무리

프로그래머스 문제를 풀며 정말 많이 보았던 Math객체의 다양한 메서드를 알아보았다.
이전부터 필요할 때 마다 구글에 검색해서 사용했는데, 한번 공부를 해보니 이해가 더 잘되었고 수학적 연산을 수행하는데 도움이 많이 될 것 같다.
다양한 상황에서 까먹지 않고 사용할 수 있도록 숙지해봐야겠다.

태그:

카테고리: ,

업데이트: