πŸ’₯ 28.1 Number μƒμ„±μž ν•¨μˆ˜

ν‘œμ€€ 빌트인 객체인 Number κ°μ²΄λŠ” μƒμ„±μž ν•¨μˆ˜ 객체닀. λ”°λΌμ„œ new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜μ—¬ Number μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ‹€.

Number μƒμ„±μž ν•¨μˆ˜μ˜ 인수둜 숫자λ₯Ό μ „λ‹¬ν•˜λ©΄μ„œ newμ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜λ©΄ [[NumberData]] λ‚΄λΆ€ μŠ¬λ‘―μ— 인수둜 전달받은 숫자λ₯Ό ν• λ‹Ήν•œ Number 래퍼 객체λ₯Ό μƒμ„±ν•œλ‹€. Number μƒμ„±μž ν•¨μˆ˜μ˜ 인수둜 μˆ«μžκ°€ μ•„λ‹Œ 값을 μ „λ‹¬ν•˜λ©΄ 인수λ₯Ό 숫자둜 κ°•μ œ λ³€ν™˜ν•œλ‹€.

const numObj = new Number(10);
console.log(numObj); // Number {[[PrimitiveValue]]: 10}

let numObj = new Number('10');
console.log(numObj); // Number {[[PrimitiveValue]]: 10}

numObj = new Number('Hello');
console.log(numObj); // Number {[[PrimitiveValue]]: NaN}

πŸ’₯ 28.2 Number ν”„λ‘œνΌν‹°

βœ” 28.2.1 Number.EPSILON

Number.EPSILON은 1κ³Ό 1보닀 큰 숫자 μ€‘μ—μ„œ κ°€μž₯ μž‘μ€ μˆ«μžμ™€μ˜ 차이와 κ°™λ‹€. Number.EPSILON은 λΆ€λ™μ†Œμˆ˜μ μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” 였차λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

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

Number.MAX_VALUEλŠ” μžμŠ€μ—μ„œ ν‘œν˜„ν•  수 μžˆλŠ” κ°€μž₯ 큰 μ–‘μˆ˜ 값이닀. Number.MAX_VALUE보닀 큰 μˆ«μžλŠ” Infinityλ‹€.

Number.MAX_VALUE; // -> 1.7976931348623157e+308
Infinity > Number.MAX_VALUE; // -> true

βœ” 28.2.3 Number.MIN_VALUE

Number.MIN_VALUEλŠ” μžμŠ€μ—μ„œ ν‘œν˜„ν•  수 μžˆλŠ” κ°€μž₯ 큰 μ–‘μˆ˜ 값이닀. Number.MIN_VALUE보닀 큰 μˆ«μžλŠ” 0이닀.

Number.MIN_VALUE; // -> 5e-324
Number.MIN_VALUE > 0; // -> true

βœ” 28.2.4 Number.MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGERλŠ” μžμŠ€μ—μ„œ μ•ˆμ „ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλŠ” κ°€μž₯ 큰 μ •μˆ˜κ°’μ΄λ‹€.

Number.MAX_SAFE_INTEGER; // -> 9007199254740991

βœ” 28.2.5 Number.MIN_SAFE_INTEGER

Number.MIN_SAFE_INTEGERλŠ” μžμŠ€μ—μ„œ μ•ˆμ „ν•˜κ²Œ ν‘œν˜„ν•  수 μžˆλŠ” κ°€μž₯ μž‘μ€ μ •μˆ˜κ°’μ΄λ‹€.

Number.MIN_SAFE_INTEGER; // -> -9007199254740991

βœ” 28.2.6 Number.POSITIVE_INFINITY

Number.POSITIVE_INFINITYλŠ” μ–‘μ˜ λ¬΄ν•œλŒ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μˆ«μžκ°’ Infinity와 κ°™λ‹€.

Number.POSITIVE_INFINITY; // -> Infinity

βœ” 28.2.7 Number.NEGATIVE_INFINITY

Number.NEGATIVE_INFINITYλŠ” 음의 λ¬΄ν•œλŒ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μˆ«μžκ°’ -Infinity와 κ°™λ‹€.

Number.NEGATIVE_INFINITY; // -> -Infinity

βœ” 28.2.8 Number.NaN

Number.NaN은 μˆ«μžκ°€ μ•„λ‹˜μ„ λ‚˜νƒ€λ‚΄λŠ” μˆ«μžκ°’μ΄λ‹€.

Number.NaN; // -> NaN

πŸ’₯ 28.3 Number λ©”μ„œλ“œ

βœ” 28.3.1 Number.isFinite

Number.isFinite 정적 λ©”μ„œλ“œλŠ” 인수둜 μ „λ‹¬λœ 숫자 값이 정상적인 μœ ν•œμˆ˜μΈμ§€ κ²€μ‚¬ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. λ§Œμ•½ μΈμˆ˜κ°€ NaN이라면 μ–Έμ œλ‚˜ falseλ₯Ό λ°˜ν™˜ν•œλ‹€.

// μΈμˆ˜κ°€ 정상적인 μœ ν•œμˆ˜μ΄λ©΄ 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
Number.isFinite(NaN); // -> false

빌트인 μ „μ—­ν•¨μˆ˜ isFiniteλŠ” 전달 받은 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ—¬ 검사λ₯Ό μˆ˜ν–‰ν•˜μ§€λ§Œ Number.isFiniteλŠ” 전달 받은 인수λ₯Ό 숫자둜 암묡적 νƒ€μž…λ³€ν™˜ ν•˜μ§€ μ•ŠλŠ”λ‹€.

// Number.isFiniteλŠ” 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isFinite(null); // -> false

// isFiniteλŠ” 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•œλ‹€. null은 0으둜 암묡적 νƒ€μž… λ³€ν™˜λœλ‹€.
isFinite(null); // -> true

βœ” 28.3.2 Number.isInteger

Number.isInteger 정적 λ©”μ„œλ“œλŠ” 인수둜 μ „λ‹¬λœ 숫자 값이 μ •μˆ˜μΈμ§€ κ²€μ‚¬ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. κ²€μ‚¬ν•˜κΈ° 전에 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.

// μΈμˆ˜κ°€ μ •μˆ˜μ΄λ©΄ trueλ₯Ό λ°˜ν™˜ν•œλ‹€.
Number.isInteger(0)     // -> true
Number.isInteger(123)   // -> true
Number.isInteger(-123)  // -> true

// 0.5λŠ” μ •μˆ˜κ°€ μ•„λ‹ˆλ‹€.
Number.isInteger(0.5)   // -> false
// '123'을 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isInteger('123') // -> false
// falseλ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isInteger(false) // -> false
// Infinity/-InfinityλŠ” μ •μˆ˜κ°€ μ•„λ‹ˆλ‹€.
Number.isInteger(Infinity)  // -> false
Number.isInteger(-Infinity) // -> false

βœ” 28.3.3 Number.isNaN

Number.isNaN 정적 λ©”μ„œλ“œλŠ” 인수둜 μ „λ‹¬λœ μˆ«μžκ°’μ΄ NaN인지 κ²€μ‚¬ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€. κ²€μ‚¬ν•˜κΈ° 전에 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.

// μΈμˆ˜κ°€ NaN이면 trueλ₯Ό λ°˜ν™˜ν•œλ‹€.
Number.isNaN(NaN); // -> true

// Number.isNaN은 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isNaN(undefined); // -> false

// isFiniteλŠ” 인수λ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•œλ‹€. undefinedλŠ” NaN으둜 암묡적 νƒ€μž… λ³€ν™˜λœλ‹€.
isNaN(undefined); // -> true

βœ” 28.3.4 Number.isSafeInteger

Number.isSafeInteger 정적 λ©”μ„œλ“œλŠ” 인수둜 μ „λ‹¬λœ μˆ«μžκ°’μ΄ μ•ˆμ „ν•œ μ •μˆ˜μΈμ§€ κ²€μ‚¬ν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό λΆˆλ¦¬μ–Έ κ°’μœΌλ‘œ λ°˜ν™˜ν•œλ‹€.

// 0은 μ•ˆμ „ν•œ μ •μˆ˜μ΄λ‹€.
Number.isSafeInteger(0); // -> true
// 1000000000000000은 μ•ˆμ „ν•œ μ •μˆ˜μ΄λ‹€.
Number.isSafeInteger(1000000000000000); // -> true

// 10000000000000001은 μ•ˆμ „ν•˜μ§€ μ•Šλ‹€.
Number.isSafeInteger(10000000000000001); // -> false
// 0.5은 μ •μˆ˜κ°€ μ•„λ‹ˆλ‹€.
Number.isSafeInteger(0.5); // -> false
// '123'을 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isSafeInteger('123'); // -> false
// falseλ₯Ό 숫자둜 암묡적 νƒ€μž… λ³€ν™˜ν•˜μ§€ μ•ŠλŠ”λ‹€.
Number.isSafeInteger(false); // -> false
// Infinity/-InfinityλŠ” μ •μˆ˜κ°€ μ•„λ‹ˆλ‹€.
Number.isSafeInteger(Infinity); // -> false

βœ” 28.3.5 Number.prototype.toExponential

toExponential λ©”μ„œλ“œλŠ” 숫자λ₯Ό μ§€μˆ˜ ν‘œκΈ°λ²•μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. 숫자 λ¦¬ν„°λŸ΄κ³Ό ν•¨κ»˜ Number ν”„λ‘œν† νƒ€μž… λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  경우 μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. 숫자 λ’€μ˜ .은 μ˜λ―Έκ°€ λͺ¨ν˜Έν•˜κΈ° λ•Œλ¬Έμ— κ·Έλ£Ήμ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  것을 ꢌμž₯ν•œλ‹€.

(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.toFixed

toFixed λ©”μ„œλ“œλŠ” 숫자λ₯Ό λ°˜μ˜¬λ¦Όν•˜μ—¬ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.

// μ†Œμˆ˜μ  μ΄ν•˜ 반올림. 인수λ₯Ό μƒλž΅ν•˜λ©΄ κΈ°λ³Έκ°’ 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

toPrecision λ©”μ„œλ“œλŠ” 인수둜 전달받은 전체 μžλ¦Ώμˆ˜κΉŒμ§€ μœ νš¨ν•˜λ„λ‘ λ‚˜λ¨Έμ§€ 자릿수λ₯Ό λ°˜μ˜¬λ¦Όν•˜μ—¬ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.

// 전체 자리수 유효. 인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ κΈ°λ³Έκ°’ 0이 μ „λ‹¬λœλ‹€.
(12345.6789).toPrecision(); // -> "12345.6789"
// 전체 1자리수 유효, λ‚˜λ¨Έμ§€ 반올림
(12345.6789).toPrecision(1); // -> "1e+4"
// 전체 2자리수 유효, λ‚˜λ¨Έμ§€ 반올림
(12345.6789).toPrecision(2); // -> "1.2e+4"
// 전체 6자리수 유효, λ‚˜λ¨Έμ§€ 반올림
(12345.6789).toPrecision(6); // -> "12345.7"

βœ” 28.3.8 Number.prototype.toString

toString λ©”μ„œλ“œλŠ” 숫자λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€.

// 인수λ₯Ό μƒλž΅ν•˜λ©΄ 10μ§„μˆ˜ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.
(10).toString(); // -> "10"
// 2μ§„μˆ˜ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.
(16).toString(2); // -> "10000"
// 8μ§„μˆ˜ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.
(16).toString(8); // -> "20"
// 16μ§„μˆ˜ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.
(16).toString(16); // -> "10"
profile
μ΄μ‚¬μ€‘μž…λ‹ˆλ‹€!🌟https://velog.io/@devkyoung2

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보