B21 : ์ˆซ์žํ˜• ์‹ฌํ™”

2025. 8. 21. 02:02ใ†Front-end/JavaScript

๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

1. ์ˆซ์žํ˜•

    1-1. e๋กœ 10 ๊ฑฐ๋“ญ์ œ๊ณฑ

    1-2. 16์ง„์ˆ˜, 2์ง„์ˆ˜, 8์ง„์ˆ˜

    1-3. toString(base)

    1-4. ์–ด๋ฆผ์ˆ˜ ๊ตฌํ•˜๊ธฐ (rounding)

    1-5. ๋ถ€์ •ํ™•ํ•œ ๊ณ„์‚ฐ

    1-6. isNaN๊ณผ isFinite

    1-7. parseInt์™€ parseFloat

2. Math์˜ ๋ฉ”์„œ๋“œ๋“ค


1. ์ˆซ์žํ˜•

1. e๋กœ 10 ๊ฑฐ๋“ญ์ œ๊ณฑ

0์ด ๋งŽ์€ ์ˆซ์ž๋“ค์„ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ค.

// en : 10์˜ n ๊ฑฐ๋“ญ์ œ๊ณฑ
alert( 1e3 === 1 * 1000 );	// true
alert( 1.23e6 === 1.23 * 1000000 );	// true
alert( 1e-6 === 0.000001 );	// true

 

2. 16์ง„์ˆ˜, 2์ง„์ˆ˜, 8์ง„์ˆ˜

์ ‘๋‘์‚ฌ 0x๋กœ 16์ง„์ˆ˜๋ฅผ, 0b๋กœ 2์ง„์ˆ˜๋ฅผ, 0o๋กœ 8์ง„์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

// 16์ง„์ˆ˜
alert( 0xff );	// 255

// 2์ง„์ˆ˜์™€ 8์ง„์ˆ˜
let a = 0b11111111;	// 255์˜ 2์ง„์ˆ˜
let b = 0o377;	// 255์˜ 8์ง„์ˆ˜

alert( a == b );

 

์ด ์™ธ์˜ ์ง„๋ฒ•์€ parseInt๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

3. toString(base)

num.toString(base) ๋ฉ”์„œ๋“œ๋Š” base ์ง„๋ฒ•์œผ๋กœ num์„ ํ‘œํ˜„ํ•œ ํ›„, ์ด๋ฅผ ๋ฌธ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

base๋Š” 2 ~36๊นŒ์ง€ ์“ธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ๊ฐ’์€ 10์ด๋‹ค.

let num = 255;

alert( num.toString(16) );	// ff
alert( num.toString(2) );	// 11111111
alert( 123456..toString(36) ); // 2n9c
  • base=2 : ๋น„ํŠธ ์—ฐ์‚ฐ ๋””๋ฒ„๊น…์— ์ฃผ๋กœ ์“ฐ์ธ๋‹ค. ์ˆซ์ž๋Š” 0 ๋˜๋Š” 1์ด ๋œ๋‹ค.
  • base=16 : 16์ง„์ˆ˜ ์ƒ‰, ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋“ฑ์„ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ˆซ์ž๋Š” 0 ~ 9, 10์ด์ƒ์˜ ์ˆ˜๋Š” A ~ F๊ฐ€ ๋œ๋‹ค.
  • base=36 : 0..9, A..Z๋ฅผ ์‚ฌ์šฉํ•ด ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹Œ ์ˆซ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ์ ์„ ๋‘ ๊ฐœ .. ๋ถ™์—ฌ์•ผํ•œ๋‹ค. ( ํ˜น์€ (123).toString(36)๋„ ๊ฐ€๋Šฅ )

 

4. ์–ด๋ฆผ์ˆ˜ ๊ตฌํ•˜๊ธฐ (rounding)

์–ด๋ฆผ์ˆ˜ ๊ด€๋ จ ๋‚ด์žฅ ํ•จ์ˆ˜ ๋ช‡ ๊ฐ€์ง€๋ฅผ ๋ณด์ž.

  • Math.floor
    ์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ๋ฒ„๋ฆผ
  • Math.ceil
    ์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ์˜ฌ๋ฆผ
  • Math.round
    ์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ
  • Math.trunc
    ์†Œ์ˆ˜๋ถ€๋ฅผ ๋ฌด์‹œ

์œ„์˜ ๋‚ด์žฅ ํ•จ์ˆ˜๋“ค๋กœ๋Š” ์ฒซ์งธ ์ž๋ฆฌ์— ๋Œ€ํ•œ ์–ด๋ฆผ์ˆ˜๋งŒ ์—ฐ์‚ฐ์ด ๋˜์—ˆ๋‹ค.

 

์†Œ์ˆ˜์  2 ์ด์ƒ์˜ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋ฆผ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ์˜ ๊ฒฝ์šฐ๋ฅผ ๋ณด์ž.

  • ๊ณฑํ•˜๊ณ  ๋‚˜๋ˆ„๊ธฐ
    ์›ํ•˜๋Š” ์ž๋ฆฟ์ˆ˜๋งŒํผ 10์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณฑํ•˜๊ณ  → ์›ํ•˜๋Š” ๋‚ด์žฅ ํ•จ์ˆ˜ ์‚ฌ์šฉ → ๊ณฑํ•œ๋งŒํผ ๋‚˜๋ˆ„๊ธฐ
  • toFixed(n) ์‚ฌ์šฉ
    ์†Œ์ˆ˜์  n๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€์˜ ์–ด๋ฆผ์ˆ˜๋ฅผ ๊ตฌํ•œ ํ›„(์˜ฌ๋ฆผ/๋ฒ„๋ฆผ), ์ด๋ฅผ ๋ฌธ์žํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.
let num = 1.23456
alert( Math.floor(num * 100) / 100 );	// ๊ณฑํ•˜๊ณ  ๋‚˜๋ˆ„๊ธฐ

let num1 = 12.34;
let num2 = 12.26;

alert( num.toFixed(1) );	// "12.3"
alert( num.toFixed(1) );	// "12.4"

 

 

5. ๋ถ€์ •ํ™•ํ•œ ๊ณ„์‚ฐ

์†Œ์ˆ˜์ ์˜ ๊ณ„์‚ฐ/๋น„๊ต๋ฅผ ํ•˜๋ฉด ์ •๋ฐ€๋„ ์†์‹ค(loss of precision)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

alert( 0.1 + 0.2 == 0.3 );	// false
alert( 0.1 + 0.2 );	// 0.30000000000000004

์ˆซ์ž๋Š” ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋˜๋Š”๋ฐ,

10์ง„์ˆ˜์—์„œ 1/3์ด ๋ฌดํ•œ ์†Œ์ˆ˜ 0.3333...์ด ๋˜๋“ฏ, 2์ง„์ˆ˜์—์„œ 2์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์ด ์•„๋‹Œ ๊ฐ’์€ ๋ฌดํ•œ ์†Œ์ˆ˜๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด toFixed()๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด๋œ๋‹ค.

let sum = 0.1 + 0.2;
alert( sum.toFixed(2) );	// 0.30

let sum = 0.1 + 0.2;
alert( +sum.toFixed(2) );	// 0.3

 

 

6. isNaN๊ณผ isFinite

Infinity, -Infinity, NaN ์ด ์„ธ ๊ฐ’์€ ์ˆซ์žํ˜•์ด์ง€๋งŒ ์ •์ƒ์ ์ธ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๊ธฐ์— ์ •์ƒ์ ์ธ ์ˆซ์ž์™€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

  • isNaN(value) : ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ NaN์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜
  • isFinite(value) : ์ธ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ NaN/Infinity/-Infinity๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜
alert( isNaN(NaN) );	// true
alert( isNaN("str") );	// true

alert( isFinite("15") );	// true
alert( isFinite("str") );	// false (NaN)
alert( isFinite("Infinity) );	// false (Infinity)

let num = +prompt("์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ", '');
alert( isFinite(num));

 

7. parseInt์™€ parseFloat

๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ๋ฌธ์ž์—ด์—์„œ ์ˆซ์ž๋ฅผ ์ฝ๋Š”๋‹ค.

์ฝ๋Š” ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฏธ ์ˆ˜์ง‘๋œ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ˆซ์ž ๋’ค์— ๋‹จ์œ„๊ฐ€ ๋ถ™์„ ๊ฒฝ์šฐ, ์ˆซ์ž๋งŒ ์ถ”์ถœํ•˜๊ธฐ ์ข‹์€ ํ•จ์ˆ˜๋‹ค.

 

๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜ ์ง„์ˆ˜(16, 2, 8, ...)๋ฅผ ์„ ํƒ์ ์œผ๋กœ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

alert( parseInt('100px') );	// 100
alert( parseFloat('12.5em') );	// 12.5

alert( parseInt('12.3') );	// 12 (์ •์ˆ˜๋ถ€๋งŒ ๋ฐ˜ํ™˜)
alert( parseFloat('12.3.4') );	// 12.3 (์†Œ์ˆ˜์  ํ•œ์ž๋ฆฌ์—์„œ ๋ฉˆ์ถค)

alert( parseInt('a123') );	// NaN (a๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฉˆ์ถค

 

 


2. Math์˜ ๋ฉ”์„œ๋“œ

Math ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋กœ ๋‹ค์–‘ํ•œ ์—ฐ์‚ฐ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Math.random()
    0๊ณผ 1 ์‚ฌ์ด์˜ ๋‚œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • Math.max(a, b, c, ...) / Math.min(a, b, c, ...)
    ์ธ์ˆ˜ ์ค‘ ์ตœ๋Œ€/์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜
  • Math.pow(n, power)
    n์„ power๋ฒˆ ๊ฑฐ๋“ญ์ œ๊ณฑํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
  • Math.sqrt(x)
    x์˜ ์ œ๊ณฑ๊ทผ์„ ๋ฆฌํ„ด
  • Math.abs(x)
    x์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฆฌํ„ด

 

 

 

 

 

 

 

์ฐธ๊ณ 

 

๋ฐ˜์‘ํ˜•