소수점 처리는 javascript 표준 내장 객체인 Number를 검색해 봅니다. (js decimal places limit 또는 자바스크립트 소수점 자리수)
항상 타입을 주의하여야 합니다.
각 자리수(1, 0.1, 0.01, 0.001)마다 (목표값을 넘지 않는) 근사값을 구하는 방식이 있습니다.
제곱근을 구하는 방법 중 바빌로니아 법이 있습니다. 바빌로니아 법의 점화식(recurrence formula)을 이해할 수 있다면, 해당 식을 이용해 문제를 풀어도 좋습니다.
코드
// 작성코드
function computeSquareRoot(num) {
// 제곱근 제곱근(Square root)은 어떤 수의 어떤 수에 걸쳐 곱해지면 원래의 수가 되는 수. 예를 들어, 9의 제곱근은 3이고, 4의 제곱근은 2입니다. 어떤 수 x의 제곱근은 √x로 표시.
// Math.pow(밑, 지수)주어진 밑 값을 주어진 지수 값으로 거듭제곱한 숫자 값.
// toFixed 소수점 이하가 길면 숫자를 반올림하고, 짧아서 부족할 경우 뒤를 0으로 채울 수 있다
// Math.pow 이용해 num의 0.5제곱(=1/2제곱)을 진행해주면 num의 루트값이 나오게 되며 이를 toFixed로 소수점 2번째 자리까지 반환
// 숫자의 제곱근을 구하는 것은 그 숫자를 0.5 승으로 높이는 것과 같다. 표현식 Math.pow(num, 0.5)는 num의 제곱근
return Number((Math.pow(num, 0.5)).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));
}