28.1 Number 생성자 함수
- 표준 빌트인 객체인 Number 객체는 생성자 함수 객체
- Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성
- Number 생성자 함수에 인수로 숫자를 전달하면서 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체를 생성
const numObj = new Number();
console.log(numObj);//[Number: 0]
const numObj2 = new Number(10);
console.log(numObj2); //[Number: 10]
- Number 생성자 함수의 인수로 숫자가 아닌 값을 전달하면 인수를 숫자로 강제 변환한 후, [[NumberData]] 내부 슬롯에 변환된 숫자를 할당한 Number 래퍼 객체를 생성
let numObj = new Number('10');
console.log(numObj); //[Number: 10]
numObj2= new Number('Hello');
console.log(numObj2); //[Number: NaN]
28.2 Number 프로퍼티
28.2.1 Number.EPSILON
- 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이
- 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
function isEqual(a,b) {
//a와 b를 뺀 값의 절대값이 Number.EPSILON보다 작으면 같은 수로 인정
return Math.abs(a-b) < Number.EPSILON;
}
isEqual(0,1 + 0.2, 0,3); //true
28.2.2 Number.MAX_VALUE
- 자바스크립트에서 표현할 수 있는 가장 큰 양수 값
28.2.3 Number.MIN_VALUE
- 자바스크립트에서 표현할 수 있는 가장 작은 양수 값
28.2.4 Number.MAX_SAFE_INTEGER
- 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수값
28.2.5 Number.MIN_SAFE_INTEGER
- 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수값
28.2.6 Number.POSITIVE_INFINTY
- 양의 무한대를 나타내는 숫자값 Infinity
28.2.7 Number.NEGATIVE_INFINTY
- 음의 무한대를 나타내는 숫자값 -Infiinty
28.2.8 Number.NaN
- 숫자가 아님(Not-a-Number)을 나타내는 숫자값
28.3 Number 메서드
28.3.1 Number.isFinite
- 인수로 전달된 숫자값이 정상적인 유한수인지 검사하여 그 결과를 불리언 값으로 반환
//인수가 정상적인 유한수 이면 true를 반환
Number.isFinite(0); //true
Number.isFinite(Number.MAX_VALUE); //true
Number.isFinite(Number.MIN_VALUE); //true
//인수가 무한수이면 false를 반환
Number.isFinite(Infinity); //false
Number.isFinite(-Infinity); //false
- 인수가 NaN이면 언제나 false를 반환
- Number.isFinite는 전달받은 인수를 숫자로 암묵적 타입변환 하지 않음
28.3.2 Number.isInteger
- 인수로 전달된 숫자값이 정수인지 검사하여 그 결과를 불리언 값으로 반환
28.3.3 Number.isNaN
- 인수로 전달된 숫자값이 NaN인지 검사하여 그 결과를 불리언 값으로 반환
- Number.isNaN는 전달받은 인수를 숫자로 암묵적 타입변환 하지 않음
28.3.4 Number.isSafeInteger
- 인수로 전달된 숫자값이 안정한 정수인지 검사하여 그 결과를 불리언 값으로 반환
28.3.5 Number.prototype.toExponential
- 숫자를 지수 표기법으로 변환하여 문자열로 변환
(77.1234).toExponential(); //7.71234e+1
(77.1234).toExponential(4); //7.7123e+1
(77.1234).toExponential(2); //7.71e+1
28.3.6 Number.prototype.toFiexd
- 숫자를 반올림하여 문자열로 반환
- 반올림하는 소수점 이하 자릿수를 나타내는 0~20사이의 정수값을 인수로 전달 가능
- 인수를 생략하면 기본값 0이 지정
//소수점 이하 반올림. 인수를 생략하면 기본값 0이 지정
(12345.6789).toFixed(); //12346
//소수점 이하 1자릿수 유효, 나머지 반올림
(12345.6789).toFixed(1); //12345.7
//소수점 이하 2자릿수 유효, 나머지 반올림
(12345.6789).toFixed(2); //12345.68
//소수점 이하 3자릿수 유효, 나머지 반올림
(12345.6789).toFixed(3); //12345.679
28.3.7 Number.prototype.toPrecision
- 인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환
- 인수로 전달받은 전체 자릿수로 표현할 수 없는 경우 지수표기법으로 결과 반환
- 전체 자릿수를 나타내는 0~21 사이의 정수값을 인수로 전달 가능
//전체 자릿수 유효. 인수를 생략하면 기본값 0이 지정
(12345.6789).toPrecision(); //12345.6789
//전체 1자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(1); //1e+4
//전체 2자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(2); //1.2e+4
//전체 3자릿수 유효, 나머지 반올림
(12345.6789).toPrecision(3); //1.23e+4
28.3.8 Number.prototype.toString
- 숫자를 문자열로 변환하여 반환
- 진법을 타나내는 2~36 사이의 정수값을 인수로 전달 가능
'JavaScript' 카테고리의 다른 글
[Deep dive] 30장 Date (0) | 2023.08.17 |
---|---|
[Deep dive] 29장 Math (0) | 2023.08.17 |
[Deep dive] 27장 배열(3) (0) | 2023.08.16 |
[Deep dive] 27장 배열(2) (0) | 2023.08.16 |
[Deep dive] 27장 배열(1) (0) | 2023.08.16 |