LHJ

I'm a FE developer.

20-1. Math 오브젝트 / Math 오브젝트 개요, Math 상수, Math 함수

07 Dec 2020 » js_beginner

20-1. Math 오브젝트 / Math 오브젝트 개요, Math 상수, Math 함수

Math 오브젝트 개요

  • 수학 계산용 오브젝트

    • 상수, 절댓값, 사인, 탄젠트 등

  • new 연산자로 인스턴스 생성 불가

    • Math, JSON, 글로벌 오브젝트 (인스턴스 생성 불가)
      인스턴스를 생성할 수 없다라는 얘기는 prototype이 없다는 얘기입니다.
      그런데 글로벌 오브젝트는 prototype이 있는 것도 있습니다.
      왜냐하면 스펙에 글로벌 오브젝트 prototype 사용 여부를 브라우저 개발사에 일임했기 때문에 그렇습니다.
      그렇다고 글로벌 오브젝트에 메소드가 있는 것은 아닙니다.
      구조를 맞추기 위함이지 메소드를 연결해 사용하겠다가 아닙니다.

  • 메소드가 아니라 함수

    • Math.abs(값) 형태

Math 상수

이름개요
Math 상수
E2.718281828459045자연로그 상수(e)
LN102.302585092994046자연로그 10
LN20.6931471805599453자연로그 2
LOG2E1.4426950408889634밑이 2인 e(자연로그 밑) 로그
LOG10E0.4342944819032518e의 상용 로그(10을 밑으로 하는 로그) 값
PI3.141592653589793파이
SQRT1_20.70710678118654760.5의 제곱근 값
SQRT21.41421356237309512의 제곱근

머신러닝을 하다보면 위의 상수들과 친해집니다.


Math 함수

이름개요이름개요
abs()절댓값 반환acos()아크 코사인(arc cosine)
floor()소수 이하 버림, 정숫값 반환sin()사인(sine)
ceil()소수 이하 올림, 정숫값 반환asin()아크 사인(arc sine)
round()소수 이하 반올림, 정숫값 반환tan()탄젠트(tangent)
max()최댓값atan()아크 탄젠트(arc tangent)
min()최솟값atan2()x, y 좌표의 아크 탄젠트(arc tangent)
random()0에서 1미만 난수sqrt()제곱근
pow()x의 y자승 값exp()자연로그 상수(e)의 제곱근
cos()코사인(cosine)log()자연로그 값

강좌에서는 일반적으로 사용하는 청색 글씨의 함수만 다룹니다.
ES6에서 수학 함수가 많이 늘어났습니다.
이로 인해 자바스크립트 사용 범위가 더 넓어 졌습니다.
특히, 머신러닝/딥러닝에서 Math 함수는 유용합니다.

abs()

구분데이터(값)
파라미터
반환변환한 절댓값

  • 음수를 양수로 변환한 절댓값 반환

      console.log(Math.abs(-123)); // 123
      console.log(Math.abs(-Infinity)); // Infinity
    

floor()

구분데이터(값)
파라미터
반환변환한 값

  • 소수 이하 버림, 정숫값 반환
  • 소수 이하 값이 있으면서 음수이면 -1을 더해 반환

      console.log(Math.floor(5.3)); // 5
      console.log(Math.floor(-1.7)); // -2
      console.log(Math.floor(-1.0)); // -1
    

ceil()

구분데이터(값)
파라미터
반환변환한 값

  • 소수 이하 올림, 정숫값 반환

      console.log(Math.ceil(5.1)); // 6
      console.log(Math.ceil(-1.7)); // -1
      console.log(Math.ceil(-0.3)); // 0
    

round()

구분데이터(값)
파라미터
반환변환한 값

  • 소수 이하 반올림, 정숫값 반환
  • 양수이면 반올림, 음수이면 반내림

      console.log(Math.round(5.1)); // 5
      console.log(Math.round(5.5)); // 6
      console.log(Math.round(-1.6)); // -2
      console.log(Math.round(-1.3)); // -1
    

max()

구분데이터(값)
파라미터콤마로 구분하여 값 작성
반환변환한 값

  • 파라미터 값 중에서 가장 큰 값을 반환
    수학 값으로 비교합니다. 유니코드 값으로 비교하지 않습니다.
  • 파라미터 값을 전부 숫자로 변환하여 비교

    • NaN가 하나라도 있으면 NaN 반환

        console.log(Math.max(5, 3, 9)); // 9
        console.log(Math.max(5, 3, "AB")); // NaN
      

min()

구분데이터(값)
파라미터콤마로 구분하여 값 작성
반환변환한 값

  • 파라미터 값 중에서 가장 작은 값을 반환
  • 파라미터 값을 전부 숫자로 변환하여 비교

    • NaN가 하나라도 있으면 NaN 반환

        console.log(Math.min(5, 3, 9)); // 3
        console.log(Math.min(5, 3, "AB")); // NaN
      

pow()

구분데이터(값)
파라미터첫번째 파라미터: x
두번째 파라미터: y
반환변환한 값

  • 파라미터 x값의 y승 값을 반환
  • y가 0일 때 x가 NaN이라도 1을 반환
  • y가 NaN이면 NaN을 반환
  • 이처럼 경우의 수가 많으므로 사용하기 전에 테스트 필요

      console.log(Math.pow(10, 2)); // 100
      console.log(Math.pow(10, 0)); // 1
      console.log(Math.pow("A", 1)); // NaN
      console.log(Math.pow(1, "A")); // NaN
      console.log(Math.pow(1)); // NaN
    
    1. 두번째 파라미터를 작성하지 않으면 NaN

random()

구분데이터(값)
파라미터사용하지 않음
반환변환한 값

  • 0에서 1미만 사이의 난수 반환

      console.log(Math.random());
      console.log(Math.random());
    
    1. random() 함수를 실행할 때마다 다른 값이 반환됩니다.