[JS] Math
사용법
Array, Date처럼 다른 내장 객체들과는 달리, Math 객체는 Math 바로 뒤에 마침표를 찍고 프로퍼티 또는 메서드명을 적어서 바로 사용할 수 있다.
Properties
- Math.E : 오일러 상수 (자연 상수)
- Math.PI : 원주율
사실 위에 언급한 Math 객체의 property 말고도 더 있지만, 실무에서 자주 쓰일 것 같은 property만 언급하였다. 이 외의 프로퍼티들에 대해선 References [2] 참고.
Methods
ceil(), floor()
ceil() 메서드는 인자로 입력된 수보다 크거나 같은 수 중 가장 작은 정수를 반환한다. floor()는 인자로 입력된 수보다 작거나 같은 수 중 가장 큰 정수를 반환한다. 이 두 메서드는 비슷한 일을 하지만 범위가 다를 뿐이다.
사진 1. floor() 메서드와 ceil() 메서드의 범위
let numbers = [0.95, 4, 7.04, -1.95, -3, -7.04];
let toCeil = numbers.map(Math.ceil);
let toFloor = numbers.map(Math.floor);
console.log("ceil: ", toCeil);
console.log("floor: ", toFloor);
ceil: [ 1, 4, 8, -1, -3, -7 ]
floor: [ 0, 4, 7, -2, -3, -8 ]
floor() 메서드는 소수점 이하를 버리고 정수부만 취하고자 할 때 활용할 수 있다.
Round()
소수점 이하를 반올림한 결과를 반환하는 메서드이다.
max(), min()
여러 개의 숫자 인수들이 입력되었을 때, 그 숫자들 중 각각 최대값과 최소값을 반환하는 메서드이다. 해당 메서드들의 인수로 배열이 아니라 여러 개의 인자 형태로 입력해야 하는 것에 주의.
let numbers = [3, 1, 5, 12, 20, -1];
console.log(Math.max(...numbers));
console.log(Math.min(...numbers));
console.log(Math.max(3, 5, 1));
console.log(Math.min(3, 5, 1));
20
-1
5
1
pow(), sqrt()
pow() 메서드는 pow(x, y)와 같이 두 수를 인수로 받으며, x의 y제곱의 결과값을 반환한다. sqrt()는 sqrt(x)와 같이 하나의 수를 인수로 받으며, 해당 인수의 제곱근을 반환한다.
만약 제곱근이 아닌 3 제곱근, 4 제곱근 등을 원한다면, pow(2, 1/4) 와 같이 pow() 메서드의 두 번째 인자로 분수 형태로 입력하면 된다.
console.log(Math.pow(2, 3));
console.log(Math.sqrt(2));
console.log(Math.pow(2, 1 / 2));
console.log(Math.pow(2, 1/4));
8
1.4142135623730951
1.4142135623730951
1.189207115002721
random()
[0, 1) 구간 사이의 부동소수점 의사난수를 반환하는 메서드이다. 시드값은 사용자가 통제할 수는 없다.
해당 메서드는 0 이상 1 미만 사이의 실수만을 무작위로 반환하므로, 난수 범위를 사용자가 원하는대로 바꿔야 한다. 다음은 random() 메서드의 반환값을 그대로 출력하는 예제와, 원하는 범위 내에서의 정수 난수, 또는 실수 난수를 반환하도록 하는 함수 예이다.
console.log(Math.random());
function getRandomInt(minInt, maxInt) {
/*
minInt, maxInt: 정수
주어진 정수 범위 내에서 무작위로 정수 하나를 추출하여 반환하는 함수.
minInt, maxInt도 범위에 포함된다.
*/
let range = maxInt - minInt + 1;
return Math.floor(Math.random() * range) + minInt;
}
function getRandomFloat(minNum, maxNum) {
/*
minNum, maxNum : 실수 (정수도 됨)
주어진 두 실수의 범위 내에서 무작위로 실수 하나를 추출하여 반환하는 함수.
minNum, maxInt도 범위에 포함된다.
*/
let range = maxNum - minNum + 1;
return Math.random() * range + minNum;
}
let min = 3;
let max = 10;
console.log(getRandomInt(min, max));
console.log(getRandomFloat(min, max));
0.37177504732906064
10
5.606894450324857
References
[1] 고경희 - “Do it! 한 권으로 끝내는 웹 기본 교과서 HTML+CSS+자바스크립트 웹 표준의 정석”, (이지스퍼블리싱, 2022)
This content is licensed under
CC BY-NC 4.0
댓글남기기