..

Search

35) Math 객체

35) Math 객체

Math 객체


Math 객체

Math 객체는 수학에서 자주 사용하는 상수와 함수들을 미리 구현해 놓은 자바스크립트 표준 내장 객체입니다.

 

Math 객체는 다른 전역 객체와는 달리 생성자(constructor)가 존재하지 않습니다.

따라서 따로 인스턴스를 생성하지 않아도 Math 객체의 모든 메소드나 프로퍼티를 바로 사용할 수 있습니다.


Math 메소드

자바스크립트는 웹 페이지에서 수학적 작업을 손쉽게 할 수 있도록 다양한 Math 메소드를 제공하고 있습니다.

가장 많이 사용되는 대표적인 Math 메소드는 다음과 같습니다.

 

1. Math.min()

2. Math.max()

3. Math.random()

4. Math.round()

5. Math.floor()

6. Math.ceil()

7. Math.sin()

 

대부분의 Math 메소드는 웹 브라우저마다 다른 결괏값을 얻을 가능성이 높습니다.

심지어 같은 자바스크립트 인터프리터라도 운영체제가 다르면 다른 결괏값을 반환할 수 있습니다.

따라서 아주 정확한 결괏값이 필요한 작업에는 Math 메소드는 사용하지 않는 것이 좋습니다.


Math.min() 메소드

Math.min() 메소드는 인수로 전달받은 값 중에서 가장 작은 수를 반환합니다.

인수가 전달되지 않으면 Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.

예제

Math.min();                              // Infinity

Math.min(1, 10, -100, -10, 1000, 0);     // -100

Math.min(1, 10, -100, -10, "-1000", 0);  // -1000

Math.min(1, 10, -100, -10, "문자열", 0); // NaN

코딩연습 ▶


Math.max() 메소드

Math.max() 메소드는 인수로 전달받은 값 중에서 가장 큰 수를 반환합니다.

인수가 전달되지 않으면 -Infinity를 반환하며, 인수 중에 비교할 수 없는 값이 포함되어 있으면 NaN을 반환합니다.

예제

Math.max();                              // -Infinity

Math.max(1, 10, -100, -10, 100, 0);      // 100

Math.max(1, 10, -100, -10, "1000", 0);   // 1000

Math.max(1, 10, -100, -10, "문자열", 0); // NaN

코딩연습 ▶


Math.random() 메소드

Math.random() 메소드는 0보다 크거나 같고 1보다 작은 무작위 숫자(random number)를 반환합니다.

예제

var min = 10, max = 20;

Math.random();                     // [0, 1)

Math.random() * (max - min) + min; // [min, max)

코딩연습 ▶

 

위의 예제에서 사용된 '['기호는 '크거나 같은'을 나타내며, ']'기호는 '작거나 같은'을 나타내는 기호입니다.
또한, '('기호는 '보다 큰'을 나타내며, ')'기호는 '보다 작은'을 나타내는 기호입니다.

Math.round() 메소드

Math.round() 메소드는 인수로 전달받은 값을 소수점 첫 번째 자리에서 반올림하여 그 결괏값을 반환합니다.

예제

Math.round(10.49);  // 10

Math.round(10.5);   // 11

Math.round(-10.5);  // -10

Math.round(-10.51); // -11

코딩연습 ▶


Math.floor() 메소드

Math.floor() 메소드는 인수로 전달받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환합니다.

예제

Math.floor(10.95);  // 10

Math.floor(11.01);  // 11

Math.floor(-10.95); // -11

Math.floor(-11.01); // -12

코딩연습 ▶


Math.ceil() 메소드

Math.ceil() 메소드는 인수로 전달받은 값과 같거나 큰 수 중에서 가장 작은 정수를 반환합니다.

예제

Math.ceil(10.95);  // 11

Math.ceil(11.01);  // 12

Math.ceil(11);     // 11

Math.ceil(-10.95); // -10

Math.ceil(-11.01); // -11

코딩연습 ▶


Math.sin() 메소드

Math.sin() 메소드는 인수로 전달받은 값의 사인(sine) 함숫값을 반환합니다.

예제

 

Math.sin(0);           // 0

Math.sin(Math.PI / 2); // 1

 

코딩연습 ▶

 

자바스크립트에서 제공하는 삼각 함수에 관한 모든 메소드는 각도의 단위로 라디안(radian)을 사용합니다.

이때 라디안 단위와 60분법 단위를 서로 변환하기 위해서는 다음과 같은 공식을 사용합니다.

문법

라디안값 = 60분법값 * (Math.PI / 180)

 

Math.PI는 수학에서 사용하는 파이(π)값을 나타내는 자바스크립트 상수입니다.
따라서 대략적인 값으로 3.145159를 나타냅니다.

자바스크립트 Math 메소드

메소드 설명
Math.min(x, y, ...) 인수로 전달받은 값 중에서 가장 작은 수를 반환함.
Math.max(x, y, ...) 인수로 전달받은 값 중에서 가장 큰 수를 반환함.
Math.random() 0보다 크거나 같고 1보다 작은 랜덤 숫자(random number)를 반환함.
Math.round(x) x를 소수점 첫 번째 자리에서 반올림하여 그 결과를 반환함.
Math.floor(x) x와 같거나 작은 수 중에서 가장 큰 정수를 반환함.
Math.ceil(x) x와 같거나 큰 수 중에서 가장 작은 정수를 반환함.
Math.abs(x) x의 절댓값을 반환함.
Math.cbrt(x) x의 세제곱근을 반환함.
Math.sqrt(x) x의 제곱근을 반환함.
Math.clz32(x)

x을 32비트 이진수로 변환한 후, 0이 아닌 비트의 개수를 반환함.

Math.exp(x) e의 값을 반환함. (e : 오일러의 수)
Math.expm1(x) 1 - e의 값을 반환함.
Math.fround(x) x와 가장 근접한 32비트 부동 소수점 수(single precision float)를 반환함.
Math.hypot(x, y, ...) 인수로 전달받은 값들을 각각 제곱한 후 더한 총합의 제곱근을 반환함.
Math.imul(x, y) 인수로 전달받은 두 값의 32비트 곱셈의 결과를 반환함.
Math.log(x) x의 자연로그 값을 반환함. (ln x)
Math.log1p(x) ln(1 + x)의 값을 반환함.
Math.log10(x) x의 10을 밑으로 가지는 로그 값을 반환함.
Math.log2(x) x의 2를 밑으로 가지는 로그 값을 반환함.
Math.pow(x, y) x의 y승을 반환함.
Math.sign(x) x의 부호 값을 반환함.
Math.trunc(x) x의 모든 소수 부분을 삭제하고 정수 부분만을 반환함.

Math.sin(x), Math.cos(x), Math.tan(x),Math.asin(x), Math.acos(x), Math.atan(x), Math.asinh(x), Math.acosh(x), Math.atanh(x), Math.atan2(x)

x의 해당 삼각 함숫값을 반환함.

자바스크립트 Math 프로퍼티

자바스크립트는 수학에서 사용하는 다양한 상수들을 Math 프로퍼티를 이용해 제공하고 있습니다.

프로퍼티 설명 대략값
Math.E 오일러의 수(Euler's constant)라고 불리며, 자연로그(natural logarithms)의 밑(base) 값 2.718
Math.LN2 2의 자연로그 값 0.693
Math.LN10 10의 자연로그 값 2.303
Math.LOG2E 오일러 수(e)의 밑 값이 2인 로그 값 1.443
Math.LOG10E 오일러 수(e)의 밑 값이 10인 로그 값 0.434
Math.PI 원의 원주를 지름으로 나눈 비율(원주율) 값 3.14159
Math.SQRT1_2 2의 제곱근의 역수 값 0.707
Math.SQRT2 2의 제곱근 값 1.414

연습문제