如何使用二分法实现“求一个数的平方根”?要求精确到小数点后 6 位。

寵の児 提交于 2020-03-03 08:19:22

如何使用二分法实现“求一个数的平方根”?要求精确到小数点后 6 位。
//precision精确度
//a原数据

double squareRoot(double a , double precision){
    double low,high,mid,tmp;
    if (a>1){
        low = 1;
        high = a;
    }else{
        low = a;
        high = 1;
    }
    while (low<=high) {
        mid = (low+high)/2.000;
        tmp = mid*mid;
        if (tmp-a <= precision && tmp-a >= precision*-1){
            return mid;
        }else if (tmp>a){
            high = mid;
        }else{
            low = mid;
        }
    }
    return -1.000;
}
int main(int argc, const char * argv[]) {
    double num = squareRoot(0.09, 0.000001);
    printf("%f",num);
    return 0;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!