在 C 語言中,由于浮點數的表示和精度問題,直接使用 ==
進行浮點數比較可能會導致不準確的結果
#include<stdio.h>
#include <math.h>
// 定義一個非常小的正數作為誤差范圍
const double EPSILON = 1e-9;
int float_equal(double a, double b) {
// 如果兩個浮點數之間的差值的絕對值小于 EPSILON,則認為它們相等
return fabs(a - b) < EPSILON;
}
int main() {
double num1 = 0.1 + 0.2;
double num2 = 0.3;
if (float_equal(num1, num2)) {
printf("num1 equals num2\n");
} else {
printf("num1 does not equal num2\n");
}
return 0;
}
在這個例子中,我們定義了一個 EPSILON
常量作為誤差范圍。float_equal
函數接受兩個浮點數參數,并返回它們是否相等的判斷結果。我們通過計算它們之間的差值的絕對值并與 EPSILON
進行比較來實現這一功能。如果差值的絕對值小于 EPSILON
,則認為這兩個浮點數相等。