问题
今天面试遇到的一个机试题,说是求整数的平方根,要求是求得的值同的精度在0.01.机试的时候懵逼了想着用二分法,但是不知道怎么取左右点。现在自己做了下,其实挺简单的。
public static void main(String[] args) {
System.out.println(getSqrt(6, 0.01));
}
static double getSqrt(int num,double precision){
double tmp,lo = 0, hi = num,mid = (lo + hi)/2;
while (Math.abs(tmp = (mid * mid - num)) > precision){
if (tmp>0){
hi = (lo+hi)/2;
}else {
lo = (lo+hi)/2;
}
mid = (lo+hi)/2;
}
return mid;
}