在C++中,可以使用二分法處理浮點數的方法與處理整數類似。但是在比較浮點數時,由于浮點數的精度問題,不能直接使用等號進行比較,而是需要設置一個非常小的誤差范圍來判斷兩個浮點數是否相等。
以下是一個使用二分法處理浮點數的示例代碼:
#include <iostream>
#include <cmath>
double binarySearch(double left, double right, double target) {
const double EPSILON = 1e-6; // 設置誤差范圍為 1e-6
while (right - left > EPSILON) {
double mid = left + (right - left) / 2;
if (std::abs(mid - target) < EPSILON) {
return mid;
} else if (mid < target) {
left = mid;
} else {
right = mid;
}
}
return left;
}
int main() {
double target = 3.5;
double result = binarySearch(0, 10, target);
std::cout << "The square root of " << target << " is approximately: " << result << std::endl;
return 0;
}
在上面的示例代碼中,我們使用二分法查找給定浮點數的平方根。注意在比較浮點數時,我們使用了一個非常小的誤差范圍 EPSILON。您可以根據實際需求調整誤差范圍的大小。