Math

Math

Math는 수학 상수와 함수를 위한 정적 속성과 정적 메서드를 담고 있는 네임스페이스 객체입니다. 수학적 계산에 필요한 다양한 함수와 상수를 제공합니다.

출처: Math - JavaScript | MDN

본문

Math 네임스페이스 객체는 수학 상수와 함수를 위한 정적 속성과 정적 메서드를 포함합니다. MathNumber 타입과 함께 동작하며, BigInt와는 동작하지 않습니다.

대부분의 전역 객체와 달리 Math는 생성자(constructor)가 아닙니다. 따라서 new 연산자와 함께 사용할 수 없고, 함수처럼 호출할 수도 없습니다. Math의 모든 속성과 메서드는 정적입니다.

참고: 많은 Math 함수의 정밀도는 구현(implementation)에 따라 달라집니다. 즉, 브라우저마다 다른 결과를 낼 수 있고, 심지어 같은 JavaScript 엔진이라도 운영체제나 아키텍처가 다르면 결과가 달라질 수 있습니다.

정적 속성 (Static properties)

  • Math.E — 오일러 상수, 자연로그의 밑. 대략 2.718.
  • Math.LN10 — 10의 자연로그. 대략 2.303.
  • Math.LN2 — 2의 자연로그. 대략 0.693.
  • Math.LOG10E — E의 밑이 10인 로그. 대략 0.434.
  • Math.LOG2E — E의 밑이 2인 로그. 대략 1.443.
  • Math.PI — 원주와 지름의 비율. 대략 3.14159.
  • Math.SQRT1_2 — ½의 제곱근. 대략 0.707.
  • Math.SQRT2 — 2의 제곱근. 대략 1.414.
  • Math[Symbol.toStringTag][Symbol.toStringTag] 속성의 초기 값은 문자열 "Math"입니다. 이 속성은 Object.prototype.toString()에서 사용됩니다.

정적 메서드 (Static methods)

  • Math.abs() — 입력값의 절댓값을 반환합니다.
  • Math.acos() — 입력값의 아크코사인을 반환합니다.
  • Math.acosh() — 입력값의 쌍곡 아크코사인을 반환합니다.
  • Math.asin() — 입력값의 아크사인을 반환합니다.
  • Math.asinh() — 입력값의 쌍곡 아크사인을 반환합니다.
  • Math.atan() — 입력값의 아크탄젠트를 반환합니다.
  • Math.atan2() — 두 인자의 몫에 대한 아크탄젠트를 반환합니다.
  • Math.atanh() — 입력값의 쌍곡 아크탄젠트를 반환합니다.
  • Math.cbrt() — 입력값의 세제곱근을 반환합니다.
  • Math.ceil() — 입력값보다 크거나 같은 가장 작은 정수를 반환합니다.
  • Math.clz32() — 32비트 정수 입력값의 선행 0 비트(leading zero bits) 개수를 반환합니다.
  • Math.cos() — 입력값의 코사인을 반환합니다.
  • Math.cosh() — 입력값의 쌍곡 코사인을 반환합니다.
  • Math.exp() — e^x 를 반환합니다. 여기서 x는 인자이고 e는 오일러 상수(자연로그의 밑)입니다.
  • Math.expm1()exp(x)에서 1을 뺀 값을 반환합니다.
  • Math.floor() — 입력값보다 작거나 같은 가장 큰 정수를 반환합니다.
  • Math.f16round() — 입력값에 가장 가까운 반정밀도(half precision) 부동소수점 표현을 반환합니다.
  • Math.fround() — 입력값에 가장 가까운 단정밀도(single precision) 부동소수점 표현을 반환합니다.
  • Math.hypot() — 인자들의 제곱의 합의 제곱근을 반환합니다.
  • Math.imul() — 입력값들의 32비트 정수 곱셈 결과를 반환합니다.
  • Math.log() — 입력값의 자연로그를 반환합니다.
  • Math.log10() — 입력값의 밑이 10인 로그를 반환합니다.
  • Math.log1p() — 수 x에 대해 1 + x의 자연로그를 반환합니다.
  • Math.log2() — 입력값의 밑이 2인 로그를 반환합니다.
  • Math.max() — 0개 이상의 숫자 중 가장 큰 값을 반환합니다.
  • Math.min() — 0개 이상의 숫자 중 가장 작은 값을 반환합니다.
  • Math.pow() — 밑 x의 지수 y 거듭제곱(x^y)을 반환합니다.
  • Math.random() — 0과 1 사이의 의사 난수(pseudo-random number)를 반환합니다.
  • Math.round() — 입력값을 가장 가까운 정수로 반올림한 값을 반환합니다.
  • Math.sign() — 입력값의 부호를 반환합니다. 양수, 음수, 0 여부를 나타냅니다.
  • Math.sin() — 입력값의 사인을 반환합니다.
  • Math.sinh() — 입력값의 쌍곡 사인을 반환합니다.
  • Math.sqrt() — 입력값의 양의 제곱근을 반환합니다.
  • Math.sumPrecise() — 전달된 이터러블 숫자들의 합을 반환하며, 중간 결과에서 부동소수점 정밀도 손실을 피합니다.
  • Math.tan() — 입력값의 탄젠트를 반환합니다.
  • Math.tanh() — 입력값의 쌍곡 탄젠트를 반환합니다.
  • Math.trunc() — 소수 자릿수를 제거한 입력값의 정수 부분을 반환합니다.

예제

도(degrees)와 라디안(radians) 간 변환 — 삼각 함수 sin(), cos(), tan(), asin(), acos(), atan(), atan2()는 각도를 라디안 단위로 기대하고 반환합니다. 사람이 도 단위로 생각하는 경향이 있고 일부 함수(CSS transform 등)는 도 단위를 받을 수 있으므로, 변환 함수를 준비하는 것이 좋습니다.

function degToRad(degrees) {
  return degrees * (Math.PI / 180);
}
function radToDeg(rad) {
  return rad / (Math.PI / 180);
}

정삼각형의 높이 계산 — 한 변의 길이가 100인 정삼각형의 높이를 구하려면, 인접 변의 길이에 각도의 탄젠트를 곱한 값이 대변과 같다는 공식을 사용합니다. JavaScript에서는 50 * Math.tan(degToRad(60)); 로 계산할 수 있습니다. Math.tan()은 라디안 입력을 기대하므로 degToRad() 함수로 60도를 라디안으로 변환합니다.

두 경계 사이의 임의 정수 반환Math.random()Math.floor()를 조합해 구현할 수 있습니다.

function random(min, max) {
  const num = Math.floor(Math.random() * (max - min + 1)) + min;
  return num;
}
random(1, 10);

더 알아보기