#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
double x;
cin >> x;
double l = 0, r = x; // l 表示左边界,r 表示右边界,初始区间为 [0, x]
// 使用二分查找法逼近 x 的平方根
while (r - l > 1e-6) { // 当区间的长度大于 1e-6 时,继续查找
double mid = (l + r) / 2; // 计算中间值 mid
if (mid * mid >= x) { // 如果 mid 的平方大于等于 x
r = mid; // 将右边界 r 更新为 mid
} else { // 如果 mid 的平方小于 x
l = mid; // 将左边界 l 更新为 mid
}
}
// 输出 l 的值,此时 l 是满足 x^(1/2) 的足够近似值
cout << l << endl;
return 0;
}
浮点数二分(C++)
于 2025-02-26 17:39:24 首次发布