์๋ฐ์คํฌ๋ฆฝํธ Math.sqrt( ) ์ฌ์ฉํ์ง ์๊ณ ์ ๊ณฑ๊ทผ ๊ตฌํ๊ธฐ
๐ ๋ฐ๋น๋ก๋์ ๋ฐฉ๋ฒ Babylonian method
์ด๋ค ๊ฐ์ ๋ฃ๋ ์ง ์ ํ์์ ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ๊ฒฐ๊ตญ, Xn+1์ด S์ ์ ๊ณฑ๊ทผ์ ๊ทผ์ ํ๋ ์๊ฐ์ด ์จ๋ค. (๊ทธ์น๋ง ๊ทธ๊ฒ ์ธ์ ์ผ์ง๋ ๋ณด์ฅ๋ชปํจ)
๐ ์ฝ๋๋ก ๊ตฌํํ๊ธฐ
โพ ์ด๊ธฐ์
์๋ ์ฝ๋
โพ ์ฝ๋ ๊ตฌํ
๊ฐ์ ์ ๋์ค๋๋ฐ ...
๊ตฌ์ฒด์ ์ผ๋ก ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๊ตฌ๋ํ๋ ์ง ๊ถ๊ธํ๋ค.
โพ ๋ฌธ์ ์
๊ทผ์ฌ๊ฐ์ด ์ ์ ์๋๊ฐ์ ์ ๊ณฑ๊ทผ์ ๊ฐ๊น์์ง๋ ๊ฑธ ํ์ธํ ์ ์์๋ค.
๊ทธ๋ฐ๋ฐ ... ๊ทผ์ฌ๊ฐ์ ๊ฒฐ๊ตญ 3.xxxxxxxxxxx ํ์์ ๋์ง ๋ชปํ๋ค.
๊ทธ๋ฆฌ๊ณ 9๊ฐ์ด ์ ๊ณฑ๊ทผ์ด ์ ์๋ก ๋จ์ด์ง๋ ์ซ์ ์ด์ธ์ ๊ฐ์ ์ ๋ ฅ๋ฐ์ผ๋ฉด while๋ฌธ์ด ๋ฌดํ๋ฐ๋ณต๋ ๊ฒ ๋ปํ๋ค.
๋ฌดํ๋ฐ๋ณต์ ๋์ด์ค break๋ฌธ์ด ํ์ํ๊ณ , -> break
๊ทธ ์กฐ๊ฑด์ ์์์ ์๋ฆฌ์๋ฅผ ์ง์ ํด ๊ทธ ๊ฐ์ ๋์ด ๊ณ์ฐํ ํ์์ฑ์ ๋๊ผ๋ค. -> .toFixed(์์์ ์๋ฆฌ์)
์์์ ์๋ฆฌ์ ์๊ด์์ด ๊ฐ์ ๊ฐ๋ค๊ณ ๋์ค๋ ok ok
๊ทธ๋ฐ๋ฐ toFixed( ) ๋ฉ์๋๋ ์ ๋ฌธ์์ด์ ๋ฐํํ๊ณ ๋๋ฆฌ ... ์ซ์๋ก ๋ณํํด์ค์ผํ๋ค. -> Number( )
โพ ๋ฌธ์ ํด๊ฒฐ ์ฝ๋
์์์์์์์์
Math.sqrt( ) ์์ฐ๊ณ ๋ ์ ๊ณฑ๊ทผ์ ๊ตฌํ ์ ์๋ ํจ์๋ฅผ ๋ง๋ค์ด๋๋ค ~!~!~!
์๋์ฝ๋ ์ฐ๋ฉด์ ํ๋ ํ๋ ๊ตฌํํด๋๊ฐ๋๊น ๋๋๊ตฌ๋ญ ์ฌ๋
โพ ์ต์ข ์ฝ๋
// Math.sqrt() ์์ฐ๊ณ ์ ๊ณฑ๊ทผ ๊ตฌํ๊ธฐ ์ฝ๋
function makeSquareRoot(num){
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));
}