区间变为0~num之间多少个数字,可以手动控制精度
例题:求一个数的平方根,精确到6位有效数字
输入
4
输出
2.000000
【注意】对于小于1的数(如0.01->0.1),右边界的初始化应该从1开始,使用max函数
代码部分:
#include<iostream>
using namespace std;
int main() {
double x;
scanf("%lf", &x);
double l=0,r=max(1.0,x);
while(r-l>1e-8) {
double mid = (l+r)/2;
//左半部分
// if(mid * mid >= x) r=mid;
// else l=mid;
//右半部分
if(mid * mid <= x) l=mid;
else r=mid;
}
printf("%lf", l);
}