迭代公式X(n+1)=(Xn+a/Xn)/2,算出X2,再将X2代公式的右边算出X3等等,直到连续两次算出的Xn和X(n+1)的差的绝对值小于某个值,即认为找到了精确的平方
实现代码:
public static double sqrt(double c){
if(c<0)return Double.NaN;
double e=1.e-15;//10的-15次方,用来限制位数,javadouble最大为16位
double t=c;
while(abs(t-c/t)>e*t){
t=(c/t+t)/2.0;
}
return t;
}
public static double abs(double x){
if(x>0)
return x;
else
return -x;
}