Math
- JS는 정수 전용 클래스가 없음.
- 모든 숫자는 IEEE 754 64비트 부동소수점 숫자.
- JS는 복잡한 숫자나 아주 큰 숫자를 지원하지 못하므로, 전문적인 숫자 분석이 필요하면 별도의 라이브러리를 찾아야 함.
숫자 형식 메서드
- JS는 다양한 숫자 형식을 지원하지 못함.
- 10진수, 고정 소수점 형식, 지수 형식, 2진수, 8진수, 16진수 등.
- JS의 숫자 형식 메서드는 모두 문자열을 반환.
- 형식에 따라 각종 기호를 온전하게 표현하기 위해서 반드시 문자열.
- 따라서 숫자 형식을 바꾸는 건 실제 표시하지 직전에 해야함.
- 숫자 형식 메서드는 보통
Mate.
이 없음.
고정 소수점
.toFixed()
- 숫자는 반올림(round).
const x = 19.51;
console.log(x.toFixed(3));
console.log(x.toFixed(2));
console.log(x.toFixed(1));
console.log(x.toFixed(0));
지수 표기법
.toExponential()
- 숫자는 반올림(round).
- 매개변수로 넘긴 정밀도에 따라 소수점 뒤에 숫자가 몇 개 나타날지 정해짐.
const x = 3800.5;
console.log(x.toExponential(4));
console.log(x.toExponential(3));
console.log(x.toExponential(2));
console.log(x.toExponential(1));
console.log(x.toExponential(0));
고정 전체 자리수
.toPrecision()
- 숫자는 반올림(round).
- 전체 자리수는 매개변수로 넘긴 자릿수와 일치.
- 필요한 경우 지수 표기법 사용.
let x = 1000;
console.log(x.toPrecision(5));
console.log(x.toPrecision(4));
console.log(x.toPrecision(3));
console.log(x.toPrecision(2));
console.log(x.toPrecision(1));
x = 15.335;
console.log(x.toPrecision(6));
console.log(x.toPrecision(5));
console.log(x.toPrecision(4));
console.log(x.toPrecision(3));
console.log(x.toPrecision(2));
console.log(x.toPrecision(1));
다른 진수
.toString()
- 원하는 진수를 매개변수로 넘기면 됨.
const x = 12;
console.log(x.toString());
console.log(x.toString(10));
console.log(x.toString(16));
console.log(x.toString(8));
console.log(x.toString(2));
상수
Math
객체에는 몇가지 상수가 프로퍼티로 내장.
- 숫자형 반환.
console.log(Math.E);
console.log(Math.PI);
console.log(Math.LN2);
console.log(Math.SQRT2);
대수 함수
거듭제곱
Math.pow(x, y)
console.log(Math.pow(2, 3));
Math.sqrt(x)
x
의 제곱근 값. Math.pow(x, 0.5)
의 값과 동일.
console.log(Math.sqrt(16));
Math.cbrt(x)
- 세제곱근 값.
Math.pow(x, 1/3)
의 값과 동일.
console.log(Math.cbrt(27));
Math.exp(x)
- 자연상수
e
에 x
제곱 한 값. Math.pow(Math.E, x)
의 값과 동일.
console.log(Math.exp(1));
Math.hypot(x1, x2,...)
console.log(Math.hypot(3, 4));
기타 함수
Math.abs(x)
console.log(Math.abs(-153));
Math.sign(x)
x
가 음수면 -1, 양수면 1, 0이면 0을 반환.
console.log(Math.sign(-10.5));
console.log(Math.sign(0));
console.log(Math.sign(5));
Math.ceil(x)
console.log(Math.ceil(3.2));
console.log(Math.ceil(-4.8));
Math.floor(x)
console.log(Math.floor(3.2));
console.log(Math.floor(-4.8));
Math.trunc(x)
console.log(Math.trunc(3.2));
console.log(Math.trunc(-4.8));
Math.round(x)
console.log(Math.round(3.2));
console.log(Math.round(-4.2));
console.log(Math.round(-4.8));
Math.min(x, y, z,...)
console.log(Math.min(2, 8, 7, 5, -5));
Math.max(x, y, z,...)
console.log(Math.max(2, 8, 7, 5, -5));
의사 난수 생성
Math.random()
- 0이상 1미만의 범위에 난수 생성. (다른 범위의 난수 생성 간편 메서드는 없음)
- 의사 난수 발생기는 엄밀히 말하면 난수 발생기와 다름.
console.log(Math.random());
x + ( y - x ) * Math.random()
console.log(10 + 10 * Math.random());
x + Math.floor(( y - x ) * Math.random())
console.log(10 + Math.floor(10 * Math.random()));
x + Math.floor(( y - x + 1 ) * Math.random())
console.log(10 + Math.floor(11 * Math.random()));
삼각 함수
- 매개변수는 라디안 값을 기준으로 함.
Math.sin(x)
, Math.cos(x)
, Math.tan(x)
Math.asin(x)
, Math.acos(x)
, Math.atan(x)
, Math.atan2(y, x)