一、平方根结果为整数
求平方根,返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
class Solution {
public int mySqrt(int x) {
int l = 0;
int r = x;
int mid = 0;
int res = 0;
while(l<=r){
mid = (l+r)/2;
if((long)mid*mid<=x){
res = mid;
l = mid + 1;
}else{
r = mid - 1;
}
}
return res;
}
}
二、平方根结果为小数,精确度
class Solution {
public float fn(float n, float e) {//目标数字 和 精度
// 先求 e 的精度
String d = String.valueOf(e);
int lengh = d.length() - 2;
float x = 0;
if (n > 0 && e > 0) {
float low = 0;
float high = n;
while (low < high) {
// 二分,并控制精度
float mid = Float.parseFloat(String.format("%." + lengh + "f", (low + high) / 2));
if (mid * mid < n - e) {
low = mid;
} else if (mid * mid > n + e) {
high = mid;
} else {
x = mid;
break;
}
}
}
return x;
}
}
[转](https://blog.csdn.net/qq_38596491/article/details/108549372)