라이브러리 함수를 사용하지 않고 부동 소수점 숫자의 세제곱근을 계산합니다. 소수점 이하 한 자리.

이 질문의 아이디어는 숫자가 0보다 큰지 또는 0보다 작은지 판단하는 것입니다. 우리는 f(x)=x^3이 R에서 단조 증가한다는 것을 알고 있으므로 함수 값이 작을수록 변수가 작습니다. . 그래서 토론을 분류

<스크립트>

        기능 cubeRoot ( n ) { ;

            //이 숫자가 양의 정수인지 음의 정수인지 판단 소수점은 남겨두어야 한다고 규정되어 있기 때문에 가감산할 때마다 0.1의 형태로 가감한다.

            경우 (n >= 0) {

                for (var i = 0; ; i += 0.1) {

                   //이것은 고등학교 함수 f(x1)<0 f(x2)>0의 영점에 대한 지식과 유사합니다. 그러면 (x1,x2)에 영점이 있어야 합니다(함수는 연속적입니다).

                    if (i ** 3 <= n && (i + 0.1) ** 3 >= n) {

                        부서지다;

                    }

                }

                //세제곱을 했기 때문에 백분위수에 따라 반올림하므로 0.05를 더한 값의 세제곱이 n보다 작다면 i+1의 세제곱이 n에 가깝다는 뜻이므로 i+1을 리턴하고 소수점 한 자리 유지

                if ((i + 0.05) ** 3 <= n) {

                    return (i + 0.1).toFixed(1)

                }

                i.toFixed(1) 반환

            }

            경우 (n < 0) {

                for (var i = 0; ; i -= 0.1) {

                    //x^3은 (-infinity, 0)에서 단조롭게 증가하므로 작을수록 작습니다. 처음에는 n보다 크고 빼기 후에는 세 번째 거듭제곱이 n보다 작습니다.

                    if (i ** 3 >= n && (i - 0.1) ** 3 <= n) {

                        부서지다;

                    }

                }

                //마찬가지로 0.05를 더한 후 3제곱이 n보다 작으면 i+1이 n의 세제곱근에 가깝다는 뜻입니다.

                if ((i + 0.05) ** 3 <= n) {

                    return (i + 0.1).toFixed(1)

                }

                i.toFixed(1) 반환

            }

        }

    </스크립트>

추천

출처blog.csdn.net/weixin_68067009/article/details/124458134