JS (28) - Number

최조니·2022년 8월 1일
0

JavaScript

목록 보기
25/36

Number
표준 빌트인 객체로 원시 타입인 숫자를 다룰 때 유용


28.1 Number 생성자 함수


28.2 Number 프로퍼티

1) Number.EPSILON

1과 1보다 큰 숫자 중에서 가장 작은 숫자와의 차이
Number.EPSILON = 2.22044604.. * 10^-16

  • 부동소수점으로 인해 발생하는 오차를 해결하기 위해 사용
0.1 + 0.2;					// 0.3000000000000004
0.1 + 0.2 === 0.3;			// false

function isEqual(a, b) {
  return Math.abs(a - b) < Number.ESPILON;
}

isEqual(0.1 + 0.2, 0.3);	// true

2) Number.MAX_VALUE

자바스크립트에서 표현할 수 있는 가장 큰 양수 값
Number.MAX_VALUE = 1.79769313... * 10^308

  • Number.MAX_VALUE보다 큰 숫자는 Infinity

3) Number.MIN_VALUE

자바스크립트에서 표현할 수 있는 가장 작은 양수 값
Number.MIN_VALUE = 5 * 10^-324

  • Number.MIN_VALUE보다 작은 숫자는 0

4) Number.MAX_SAFE_INTEGER

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


5) Number.MIN_SAFE_INTEGER

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


6) Number.POSITIVE_INFINITY

양의 무한대를 나타내는 숫자값

  • Infinity와 같음

7) Number.NEGATIVE_INFINITY

음의 무한대를 나타내는 숫자값

  • -Infinity와 같음

8) Number.NaN

숫자가 아님을 나타내는 숫자값 (Not-a-Number)

  • window.NaN와 같음


28.3 Number 메서드

1) Number.isFinite

인수로 전달된 숫자값이 정상적인 유한수, 즉 Infinity / -Infinity가 아닌지 검사하여 불리언 값으로 반환

Number.isFinite(0);		// true
Number.isFinite(Number.MAX_VALUE);	// true
Number.isFinite(Number.MIN_VALUE);	// true

Number.isFinite(Infinity);			// false
Number.isFinite(-Infinity);			// false

Number.isFinite(NaN);				// false
  • 인수가 NaN이면 언제나 false 반환

  • Number.isFinite와 빌트인 전역 함수 isFinite와 차이가 있음

    • Number.isFinite는 인수를 숫자로 암묵적 타입 변환을 하지 않음
    • isFinite는 인수를 숫자로 암묵적 타입 변환함
Number.isFinite(null);	// false
isFinite(null);			// true

2) Number.isInteger

인수로 전달된 숫자값이 정수인지 검사하여 불리언 값으로 반환

  • 인수를 숫자로 암묵적 타입 변환하지 않음
Number.isInteger(0);		// true
Number.isInteger(123);		// true
Number.isInteger(-123);		// true

Number.isInteger(0.5);		// false
Number.isInteger('123');	// false

3) Number.isNaN

인수로 전달된 숫자값이 NaN인지 검사하여 불리언 값으로 반환

  • Number.isNaN와 빌트인 전역 함수 isNaN와 차이가 있음
    • Number.isNaN는 인수를 숫자로 암묵적 타입 변환을 하지 않음
    • isNaN는 인수를 숫자로 암묵적 타입 변환함
Number.isNaN(undefined);	// false
isNaN(undefined);			// true

4) Number.isSafeInteger

인수로 전달된 숫자값이 안전한 정수인지 검사하여 불리언 값으로 반환

  • 안전한 정수값 : -(2^53 - 1) ~ (2^53 - 1)

  • 인수를 숫자로 암묵적 타입 변환하지 않음

5) Number.prototype.toExponential

숫자를 지수 표기법으로 변환하여 문자열로 반환

  • 인수로 소수점 이하로 표현할 자릿수를 전달할 수 있음

  • 숫자 리터럴과 함께 Number 프로토타입 메서드를 사용할 경우 에러 발생

(77.1234).toExponential();	// "7.71234e+1"
(77.1234).toExponential(4);	// "7.7123e+1"
(77.1234).toExponential(2);	// "7.71e+1"

77.toExponential();			// SyntaxError: Invalid or unexpected token

6) Number.prototype.toFixed

숫자를 반올림하여 문자열로 반환

  • 반올림하는 소수점 이하 자릿수를 나타내는 0~20사이의 정수값을 인수로 전달
    • 인수를 생략하면 기본값 0
(12345.6789).toFixed();		// "123456"
(12345.6789).toFixed(1);	// "12345.7"
(12345.6789).toFixed(2);	// "12345.68"
(12345.6789).toFixed(3);	// "12345.679"

7) Number.prototype.toPrecision

인수로 전달받은 전체 자릿수까지 유효하도록 나머지 자릿수를 반올림하여 문자열로 반환

  • 인수로 전달받은 전체 자릿수로 표현할 수 없는 경우 지수표기법으로 결과 반환

  • 전체 자릿수를 나타내는 0~21사이의 정수값을 인수로 전달

    • 인수를 생략하면 기본값 0
(12345.6789).toPrecision();		// "12345.6789"
(12345.6789).toPrecision(1);	// "1e+4"
(12345.6789).toPrecision(2);	// "1.2e+4"
(12345.6789).toPrecision(3);	// "12345.7"

8) Number.prototype.toString

숫자를 문자열로 변환하여 반환

  • 진법을 나타내는 2~36 사이의 정수값을 인수로 전달
    • 인수를 생략하면 기본값 10진법
(10).toString();	// "10"
(16).toString(2);	// "10000"
(16).toString(8);	// "20"
(16).toString(16);	// "10"
profile
Hello zoni-World ! (◍ᐡ₃ᐡ◍)

0개의 댓글