手写代码实现浮点数开根号,即实现库函数sqrt的功能
思路,使用二分实现,需要注意一点,要计算的数字如果<1则右界为1
const double eps = 1e-6;
double my_sqrt(const double a) {
double left = 0, right = a < 1 ? 1 : a;
while (left < right) {
double mid = (left + right) / 2;
double temp = mid * mid;
if (temp < a) left = mid + eps;
else if (temp > a) right = mid - eps;
else return mid;
}
return left;
}

近期评论