JavaScript Math
사용 방법
Math
객체란?
Math
객체는 수학적인 상수와 함수를 위한 내장 객체이다.
Math
객체는 생성자가 없으며, 정적 프로퍼티와 메서드로만 구성되어있다. 즉, Math
객체를 인스턴스화 하지 않고 수학적인 연산을 수행할 수 있다.
Math
주요 메서드
1-1) Math.abs(x)
주어진 숫자의 절대값을 반환한다.
- 양수의 절대값은 그자체이다. ex)
10
의 절대값은10
이다. - 음수의 절대값은 그 숫자의 양수 값이다. ex)
-10
의 절대값은10
이다. - 0의 절대값은
0
이다.
console.log(Math.abs(-1515)); // 1515
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
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
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
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
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
1-7) Math.pow(base, exponent)
주어진 숫자의 거듭제곱을 반환한다.
-
base
: 거듭제곱의 밑이 되는 숫자이다. -
exponent
: 거듭제곱의 지수(승수)이다. 이 값은 정수여야한다. - 즉
Math.pow(base, exponent)
는base
의exponent
제곱을 반환한다. - 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승)
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 (음수의 경우 제곱근은 정의되지 않음)
1-9) Math.random(x)
0이상 1미만의 난수를 반환한다.
-
Math.random()
함수는 매번 호출할 때마다 새로운 무작위 숫자를 반환한다. 말 자체로 랜덤의 값임 - 반환된 숫자는 0이상 1미만의 범위에 속하며, 1은 포함되지 않음
- 만약 다른 범위의 난수가 필요하다면 값을 조정하면된다.
- ex) 0~10사이 난수를 생성:
Math.random() * 10
- ex) 0~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: 원하는 범위의 최대값
*/
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 (정수는 그 자체로 반환)
Math
함수를 통한 예제
2-1) 절대값을 구하기
변수 num
의 값은 -10이다. 변수 num
의 절대값을 구해보자
// Math.abs() 사용
let num = -10;
console.log(Math.abs(num)); // 10
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
2-3) 최대값과 최소값
변수 values
에 [1,10,5,20,2] 값이 있다. 최대값과 최소값을 구해보자
let values = [1,10,5,20,2]
Math.max(...values); // 20
Math.min(...values); // 1
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
2-5) 난수 생성
10이상 20사이의 랜덤한 숫자를 생성해보자
// Math.floor(Math.random() * (max - min + 1)) + min
console.log(Math.floor(Math.random() * (20 - 10 + 1)) + 10)
2-6) 소숫점 제거
변수 n
의 값은 1.016546789 이다. 소수점을 제거해보자.
let n = 1.016546789;
console.log(Math.trunc(n)) // 1
마무리
프로그래머스 문제를 풀며 정말 많이 보았던 Math
객체의 다양한 메서드를 알아보았다.
이전부터 필요할 때 마다 구글에 검색해서 사용했는데, 한번 공부를 해보니 이해가 더 잘되었고 수학적 연산을 수행하는데 도움이 많이 될 것 같다.
다양한 상황에서 까먹지 않고 사용할 수 있도록 숙지해봐야겠다.