javascript - core - standard-built-in-object 02 Number

yj k·2023년 4월 15일

javascript

목록 보기
14/18

02. Number

01_Number

표준 빌트인 객체인 Number는 원시 타입인 숫자를 다룰 때 유용한 프로퍼티와 메서드를 제공한다.

/* Number 생성자 함수 */
const obj = new Number();       // Number 인스턴스 생성
console.log(obj);               // 인수 전달하지 않을 경우 0을 할당

const obj2 = new Number(1);
console.log(obj2);              // 인수로 전달 받은 숫자 할당

const obj3 = new Number('1');
console.log(obj3);              // 인수로 전달 받은 문자 숫자로 형변환

const obj4 = new Number('number');
console.log(obj4);              // 숫자 형변환 불가 시 NaN

new 연산자를 사용하지 않고 호출하면 Number 인스턴스가 아닌 숫자를 반환하므로 명시적 타입 형변환에 활용 가능 (02_variable > 04_explicit-coercion > 02_convert-to-number)




02_Number-property

Number.MAX_VALUE : 자바스크립트에서 표현할 수 있는 가장 큰 양수 값


Number.MIN_VALUE : 자바스크립트에서 표현할 수 있는 가장 작은 양수 값


Number.MAX_SAFE_INTEGER : 자바스크립트에서 안전하게 표현할 수 있는 가장 큰 정수 값


Number.MIN_SAFE_INTEGER : 자바스크립트에서 안전하게 표현할 수 있는 가장 작은 정수 값


Number.POSITIVE_INFINITY : 양의 무한대를 나타내는 숫자값 Infinity와 같다


Number.NEGATIVE_INFINITY : 음의 무한대를 나타내는 숫자값 -Infinity와 같다


Number.NaN : 숫자가 아님을 나타내는 숫자값


Number.EPSILON : 부동 소수점으로 인해 발생하는 오차를 해결하기 위해 사용한다

console.log(Number.EPSILON);    // 1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이와 같다
console.log(0.1 + 0.2);         // 부동소수점 표현은 2진법으로 변환했을 때 무한소수가 되어 미세한 오차가 발생할 수 밖에 없다
console.log(0.1 + 0.2 === 0.3);             // false
console.log(isEqual(0.1 + 0.2, 0.3));       // true

function isEqual(a, b) {
    // a - b의 절대값이 Number.EPSILON 보다 작으면 같은 수로 인정한다
    return Math.abs(a - b) < Number.EPSILON;
}




03_Number-method

Number.isFinite : 인수로 전달 된 숫자값이 정상적인 유한수인지 검사하여 결과를 불리언으로 반환

console.log(isFinite(null));            // 빌트인 전역함수 isFinite는 암묵적 타입변환을 한다

Number.`isInteger` : 인수로 전달 된 숫자값이 정수인지 검사하여 결과를 불리언으로 반환
Number.`isNaN` : 인수로 전달 된 숫자값이 NaN인지 검사하여 결과를 불리언으로 반환 ``` console.log(isNaN(undefined)); // 빌트인 전역함수 isNaN은 암묵적 타입변환을 한다

<br>
Number.`isSafeInteger` : 인수로 전달 된 숫자값이 안전한 정수인지 검사하여 결과를 불리언으로 반환

<br>
Number.prototype.`toExponential` : 숫자를 지수 표기법으로 변환하여 문자열로 반환

<br>
Number.prototype.`toFixed` : 숫자를 반올림하여 문자열로 반환한다

// 반올림 하는 소수점 이하 자리수를 나타내는 0~20 사이의 정수값을 인수로 전달할 수 있다
console.log((1.23456).toFixed()); // 1
console.log((1.23456).toFixed(3)); // 1.235
console.log((1.23456).toFixed(1)); // 1.2


<br>
Number.prototype.`toPrecision` : 인수로 전달 받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환

// 0~21사이의 정수 값을 인수로 전달할 수 있으며 생략하면 기본값 0이 지정된다
console.log((123.456).toPrecision()); // 123.456
console.log((123.456).toPrecision(5)); // 123.46
console.log((123.456).toPrecision(3)); // 123
console.log((123.456).toPrecision(1)); // 1e+2


<br>
Number.prototype.`toString` : 숫자를 문자열로 변환하여 반환한다

// 진법을 나타내는 2~36 사이의 정수값을 인수로 전달할 수 있다
console.log((100).toString()); // 100
console.log((100).toString(2)); // 1100100
console.log((100).toString(8)); // 144
console.log((100).toString(16)); // 64

0개의 댓글