二分:N - e < x * x < N + e
double qart(double N, double e) {
double lo = 0;
double hi = N;
double result = 0;
double mid = 0, square = 0;
while (1)
{
mid = (lo + hi) / 2;
square = mid * mid;
if (square > N - e && square < N + e) {
result = mid;
break;
}
else if (square < N - e) {
lo = mid;
continue;
}
hi = mid;
}
return result;
}
另外还有牛顿迭代法以及级数展开方法。