实测double在10−8的精度时出现误差!
#include <bits/stdc++.h>
using namespace std;
double sqrt_(double num){
const double eps = 1e-8;
double L = 0.0,R = num;
double mid = (R+L)/2.0;
while((R-L)>eps){
if(mid*mid>num){
R = mid;
}else{
L = mid;
}
mid = (R+L)/2.0;
}
return mid;
}
int main() {
printf("%.8lf\n",sqrt_(7.0)*sqrt_(7.0));
return 0;
}