[JS] Math

Chanki Hong·2022년 12월 25일
0

JavaScript

목록 보기
17/30
post-thumbnail

Math

  • JS는 정수 전용 클래스가 없음.
  • 모든 숫자는 IEEE 754 64비트 부동소수점 숫자.
  • JS는 복잡한 숫자나 아주 큰 숫자를 지원하지 못하므로, 전문적인 숫자 분석이 필요하면 별도의 라이브러리를 찾아야 함.

숫자 형식 메서드

  • JS는 다양한 숫자 형식을 지원하지 못함.
  • 10진수, 고정 소수점 형식, 지수 형식, 2진수, 8진수, 16진수 등.
  • JS의 숫자 형식 메서드는 모두 문자열을 반환.
  • 형식에 따라 각종 기호를 온전하게 표현하기 위해서 반드시 문자열.
  • 따라서 숫자 형식을 바꾸는 건 실제 표시하지 직전에 해야함.
  • 숫자 형식 메서드는 보통 Mate. 이 없음.

고정 소수점

  • .toFixed()
  • 숫자는 반올림(round).
const x = 19.51;
console.log(x.toFixed(3)); // 19.510
console.log(x.toFixed(2)); // 19.51
console.log(x.toFixed(1)); // 19.5
console.log(x.toFixed(0)); // 20

지수 표기법

  • .toExponential()
  • 숫자는 반올림(round).
  • 매개변수로 넘긴 정밀도에 따라 소수점 뒤에 숫자가 몇 개 나타날지 정해짐.
const x = 3800.5;
console.log(x.toExponential(4)); // 3.8005e+3
console.log(x.toExponential(3)); // 3.801e+3
console.log(x.toExponential(2)); // 3.80e+3
console.log(x.toExponential(1)); // 3.8e+3
console.log(x.toExponential(0)); // 4e+3

고정 전체 자리수

  • .toPrecision()
  • 숫자는 반올림(round).
  • 전체 자리수는 매개변수로 넘긴 자릿수와 일치.
  • 필요한 경우 지수 표기법 사용.
let x = 1000;
console.log(x.toPrecision(5)); // 1000.0
console.log(x.toPrecision(4)); // 1000
console.log(x.toPrecision(3)); // 1.00e+3
console.log(x.toPrecision(2)); // 1.0e+3
console.log(x.toPrecision(1)); // 1e+3
x = 15.335;
console.log(x.toPrecision(6)); // 15.3350
console.log(x.toPrecision(5)); // 15.335
console.log(x.toPrecision(4)); // 15.34
console.log(x.toPrecision(3)); // 15.3
console.log(x.toPrecision(2)); // 15
console.log(x.toPrecision(1)); // 2e+1

다른 진수

  • .toString()
  • 원하는 진수를 매개변수로 넘기면 됨.
const x = 12;
console.log(x.toString()); // 12
console.log(x.toString(10)); // 12
console.log(x.toString(16)); // c
console.log(x.toString(8)); // 14
console.log(x.toString(2)); // 1100

상수

  • Math 객체에는 몇가지 상수가 프로퍼티로 내장.
  • 숫자형 반환.
console.log(Math.E); // 자연로그 밑: 2.718281828459045
console.log(Math.PI); // 원주율: 3.141592653589793
console.log(Math.LN2); // 2의 자연 로그: 0.6931471805599453
console.log(Math.SQRT2); // 2의 제곱근: 1.4142135623730951

대수 함수

  • 숫자형 반환.

거듭제곱

Math.pow(x, y)

  • xy 제곱의 값.
console.log(Math.pow(2, 3)); // 8

Math.sqrt(x)

  • x 의 제곱근 값. Math.pow(x, 0.5) 의 값과 동일.
console.log(Math.sqrt(16)); // 4

Math.cbrt(x)

  • 세제곱근 값. Math.pow(x, 1/3) 의 값과 동일.
console.log(Math.cbrt(27)); // 3

Math.exp(x)

  • 자연상수 ex 제곱 한 값. Math.pow(Math.E, x) 의 값과 동일.
console.log(Math.exp(1)); // 2.718281828459045

Math.hypot(x1, x2,...)

  • 매개변수 제곱에 합의 제곱근.
console.log(Math.hypot(3, 4)); // 5

기타 함수

Math.abs(x)

  • x 의 절댓값.
console.log(Math.abs(-153)); // 153

Math.sign(x)

  • x 가 음수면 -1, 양수면 1, 0이면 0을 반환.
console.log(Math.sign(-10.5)); // -1
console.log(Math.sign(0)); // 0
console.log(Math.sign(5)); // 1

Math.ceil(x)

  • x 값의 올림.
console.log(Math.ceil(3.2)); // 4
console.log(Math.ceil(-4.8)); // -4

Math.floor(x)

  • x 값의 내림.
console.log(Math.floor(3.2)); // 3
console.log(Math.floor(-4.8)); // -5

Math.trunc(x)

  • x 값의 버림.
  • 소수점 아래 부분 버림.
console.log(Math.trunc(3.2)); // 3
console.log(Math.trunc(-4.8)); // -4

Math.round(x)

  • x 값의 반올림.
console.log(Math.round(3.2)); // 3
console.log(Math.round(-4.2)); // -4
console.log(Math.round(-4.8)); // -5

Math.min(x, y, z,...)

  • 매개변수 중 최솟값.
console.log(Math.min(2, 8, 7, 5, -5)); // -5

Math.max(x, y, z,...)

  • 매개변수 중 최댓값.
console.log(Math.max(2, 8, 7, 5, -5)); // 8

의사 난수 생성

  • Math.random()
  • 0이상 1미만의 범위에 난수 생성. (다른 범위의 난수 생성 간편 메서드는 없음)
  • 의사 난수 발생기는 엄밀히 말하면 난수 발생기와 다름.
console.log(Math.random());

x + ( y - x ) * Math.random()

  • x 이상 y 미만 범위의 난수 생성.
console.log(10 + 10 * Math.random()); // 10이상 20미만.

x + Math.floor(( y - x ) * Math.random())

  • x 이상 y 미만 범위의 정수 생성.
console.log(10 + Math.floor(10 * Math.random())); // 10이상 20미만의 정수.

x + Math.floor(( y - x + 1 ) * Math.random())

  • x 이상 y 이하 범위의 정수 생성.
console.log(10 + Math.floor(11 * Math.random())); // 10이상 20이하의 정수.

삼각 함수

  • 매개변수는 라디안 값을 기준으로 함.
  • Math.sin(x), Math.cos(x), Math.tan(x)
  • Math.asin(x), Math.acos(x), Math.atan(x), Math.atan2(y, x)

0개의 댓글