๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‚ Base/์•Œ๊ณ ๋ฆฌ์ฆ˜

์ œ๊ณฑ๊ทผ ๊ฐ’์„ ์†Œ์ˆ˜์  ๋‘ ์ž๋ฆฌ๊นŒ์ง€ ๋ฆฌํ„ดํ•˜๊ธฐ : feat. ๋ฐ”๋นŒ๋กœ๋‹ˆ์•„ ๋ฒ•์˜ ์ ํ™”์‹, parseInt( )์™€ Number( )์˜ ์ฐจ์ด

by Dev. Ella 2023. 4. 6.

๐Ÿ“œ ๋ฌธ์ œ

์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ œ๊ณฑ๊ทผ ๊ฐ’์„ ์†Œ์ˆ˜์  ๋‘ ์ž๋ฆฌ๊นŒ์ง€ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

Math.sqrt ์‚ฌ์šฉ์€ ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

 

โœ๐Ÿป ๋‚ด ํ’€์ด

function computeSquareRoot(num) {

  // pseudo code
  // let originNum = 9;
  // let approxNum = originNum / 2;
  // while((approxNum * 2) !== originNum){
  //   approxNum = (approxNum + (originNum / approxNum) / 2) 
  // }

  let approxNum = num / 2;
  while((approxNum ** 2) !== num){
    if(Number((approxNum ** 2).toFixed(2)) === num) {
      break;
    }
    approxNum = (approxNum + (num / approxNum)) / 2;
  }
  return Number(approxNum.toFixed(2));
}

 

โœ๐Ÿป ๋˜ ๋‹ค๋ฅธ ํ’€์ด

function computeSquareRoot(num) {
  const diffs = [1, 0.1, 0.01, 0.001];
  let base = 1;
  for (let i = 0; i < diffs.length; i++) {
    while (base * base < num) {
      base = base + diffs[i];
    }

    if (base * base === num) {
      return base;
    } else {
      base = base - diffs[i];
    }
  }
  return Number(base.toFixed(2));
}

 

๐Ÿ’ก ์•Œ์•„๋‘๋ฉด ์ข‹์„ ๊ฐœ๋…

๋ฐ”๋นŒ๋กœ๋‹ˆ์•„ ๋ฒ•์˜ ์ ํ™”์‹

Xn์€ ๋ง๊ทธ๋Œ€๋กœ ๊ทผ์‚ฌ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—, S์— ๋ฃจํŠธ๋ฅผ ์”Œ์šด ๊ฐ’์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šธ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋Š” ๊ทผ์‚ฌ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์–ด๋–ค ๊ฐ’์„ ๋„ฃ๋“ ์ง€ ์ ํ™”์‹์„ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ๊ฒฐ๊ตญ Xn+1์ด S์˜ ์ œ๊ณฑ๊ทผ์— ๊ทผ์ ‘ํ•˜๋Š” ์ˆœ๊ฐ„์ด ์˜จ๋‹ค.

// psuedo code
let ๊ทผ์‚ฌ๊ฐ’ = ์›๋ž˜ ์ˆซ์ž / 2;
while((๊ทผ์‚ฌ๊ฐ’**2) !== ์›๋ž˜์ˆซ์ž) {
	๊ทผ์‚ฌ๊ฐ’ = (๊ทผ์‚ฌ๊ฐ’ + (์›๋ž˜์ˆซ์ž / ๊ทผ์‚ฌ๊ฐ’) / 2
}

*์™€ **์˜ ์ฐจ์ด์ 

2*3 = 6 // 2 ๊ณฑํ•˜๊ธฐ 3
2**3 = 8 // 2์˜ 3์Šน

์†Œ์ˆ˜์  ์ž๋ฆฌ์ˆ˜

toFixed( ) ๋ฉ”์†Œ๋“œ๋Š” ์†Œ์ˆ˜์  n์ž๋ฆฌ ์ˆ˜๊นŒ์ง€ ๋‚˜ํƒ€๋‚œ๋‹ค. 

var numObj = 12345.6789;

numObj.toFixed(); // '12346': ๋ฐ˜์˜ฌ๋ฆผํ•˜๋ฉฐ, ์†Œ์ˆ˜ ๋ถ€๋ถ„์„ ๋‚จ๊ธฐ์ง€ ์•Š์Œ
numObj.toFixed(1); // '12345.7': ์†Œ์ˆ˜์  1์ž๋ฆฌ๊นŒ์ง€ ๋‚จ๊ธฐ๊ณ  ๋ฐ˜์˜ฌ๋ฆผ
numObj.toFixed(6); // '12345.678900': ๋นˆ ๊ณต๊ฐ„์„ 0์œผ๋กœ ์ฑ„์›€

Number ( )

Number( ) ๋Š” JavaScript ํ‘œ์ค€ ๋‚ด์žฅ ๊ฐ์ฒด๋กœ์„œ, ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์ด๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ Numberํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋งŒ์•ฝ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์œผ๋ฉด NaN์„ ๋ฆฌํ„ดํ•œ๋‹ค.

Number('123'); // ์ˆซ์ž 123์„ ๋ฐ˜ํ™˜
Number('123'); === 123; // true

Number('ella'); // NaN
Number(undefined); // NaN
// ์ถ”๊ฐ€: parseInt()์™€์˜ ์ฐจ์ด๋Š”?
// parseInt(): ๋ฌธ์ž์—ด์—์„œ ์ •์ˆ˜๋งŒ ๋ฝ‘์•„์„œ ๋ณ€ํ™˜
// Number(): ๋ฌธ์ž์—ด ์ „์ฒด๊ฐ€ ์ˆซ์ž์ผ ๋•Œ ์†Œ์ˆ˜์ ๊นŒ์ง€ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜

let year = '2023๋…„๋„'
parseInt(year); // 2023
Number(year); // NaN

let year = '์ด์ œ 2023๋…„๋„'
parseInt(year); // NaN
Number(year); // NaN

let year = '2023.123';
parseInt(year); // 2023
Number(year); // 2023.123

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ๋ฐฐ์šด ์ 

์ด๋ฒˆ ํ•œ ๋ฌธ์ œ์—์„œ ๋ฐฐ์šด ๊ฐœ๋…, ๋‹ค์‹œ ํ•œ๋ฒˆ ์ตํžŒ ๊ฐœ๋…์ด ์ •๋ง ๋งŽ๋‹ค. ๋น„์Šทํ•ด ๋ณด์ด๋Š” ๋ฉ”์†Œ๋“œ๋ผ๋„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ธฐ์— ์‚ฌ์†Œํ•œ ์ฐจ์ด๋ผ๋„ ์ž˜ ์•Œ์•„๋‘์–ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

 

๐Ÿ“Ž ์ฐธ๊ณ  ์ž๋ฃŒ

- Blog: parseInt()์™€ Number()์˜ ์ฐจ์ด

- Blog: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Math.sqrt( ) ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ œ๊ณฑ๊ทผ ๊ตฌํ•˜๊ธฐ

๋Œ“๊ธ€