๊ด€๋ฆฌ ๋ฉ”๋‰ด

Daehyunii's Dev-blog

28์žฅ Number ๋ณธ๋ฌธ

ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์ธ Number๋Š” ์›์‹œ ํƒ€์ž…์ธ ์ˆซ์ž๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค

 

28.1 Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜

  ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์ธ Number ๊ฐ์ฒด๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๊ฐ์ฒด๋‹ค. ๋”ฐ๋ผ์„œ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜์—ฌ Number ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜๋ฉด [[Numberdata]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— 0์„ ํ• ๋‹นํ•œ Number ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

const numObj = new Number();
console.log(numObj); //Number {0}

  Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ˆซ์ž๋ฅผ ์ „๋‹ฌํ•˜๋ฉด์„œ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜๋ฉด [[Numberdata]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•œ Number ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

const numObj = new Number(10);
console.log(numObj); //Number {10}

  Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•œ ํ›„, [[Numberdata]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ๋ณ€ํ™˜๋œ ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•œ Number ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด NaN์„ [[Numberdata]] ๋‚ด๋ถ€ ์Šฌ๋กฏ ํ• ๋‹นํ•œ Number ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

  ๋งŒ์•ฝ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  Number ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด Number ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

console.log(Number('0')); // 0
console.log(Number('-1')); // -1
console.log(Number('10.53')); // 10.53
console.log(Number(true)); // 1
console.log(Number(false)); // 0

28.3 Number ๋ฉ”์„œ๋“œ

1) Number.isFinite

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ˆซ์ž๊ฐ’์ด ์ •์ƒ์ ์ธ ์œ ํ•œ์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์Œ

 

2) Number.isInteger

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ˆซ์ž๊ฐ’์ด ์ •์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์Œ

 

3) Number.isNaN

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ˆซ์ž๊ฐ’์ด NaN์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์Œ

 

4) Number.isSafeInteger

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋œ ์ˆซ์ž๊ฐ’์ด ์•ˆ์ „ํ•œ ์ •์ˆ˜์ธ์ง€ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜(253~ -1์‚ฌ์ด์˜ ์ •์ˆ˜๊ฐ’)

์ „๋‹ฌ๋ฐ›์€ ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ์•”๋ฌต์  ํƒ€์ž… ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์Œ

 

5) Number.prototype.toExponential

์ˆซ์ž๋ฅผ ์ง€์ˆ˜ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜

 

6) Number.prototype.toFixed

์ˆซ์ž๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜

์ธ์ˆ˜ ์ƒ๋žต์‹œ ๊ธฐ๋ณธ๊ฐ’ 0 ์ง€์ •

 

7) Number.prototype.toPrecision

์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ „์ฒด ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ์œ ํšจํ•˜๋„๋ก ๋‚˜๋จธ์ง€ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜

์ธ์ˆ˜ ์ƒ๋žต์‹œ ๊ธฐ๋ณธ๊ฐ’ 0 ์ง€์ •

 

8) Number.prototype.toString

์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜

์ง„๋ฒ•์„ ๋‚˜ํƒ€๋‚ด๋Š” 2~36 ์‚ฌ์ด์˜ ์ •์ˆ˜๊ฐ’์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ

์ธ์ˆ˜ ์ƒ๋žต์‹œ ๊ธฐ๋ณธ๊ฐ’ 10์ง„๋ฒ• ์ง€์ •