public class MySqrt {
public static double sqrt(double n) {
if (n == 0) {
return 0;
}
double max;
if (n >= 1) {
max = n;
} else {
max = 1;
}
double min = 0.0;
double p = 1e-9;
double mid = (max + min) / 2.0;
while(Math.abs(mid * mid - n) > p) {
if(mid * mid < n) {
min = mid;
} else if(mid * mid > n) {
max = mid;
} else {
return mid;
}
mid = (max + min) / 2.0;
}
return mid;
}
public static void main(String[] args) {
System.out.println(sqrt(0));
System.out.println(sqrt(0.16));
System.out.println(sqrt(0.25));
System.out.println(sqrt(0.81));
System.out.println(sqrt(1));
System.out.println(sqrt(25));
}
}
输出:
0.0
0.40000000037252903
0.5
0.900000000372529
0.9999999995343387
4.99999999992724