浮点型大小比较
計算機對單精度浮點數的比較。
只可能是 數學意義上不相等的,處理成相等,因為精度畢竟有限。
如果是數學意義上相等,卻處理成相等。這是不可能的。
?
你說的,不能使用 a == b比較。
應該是這么比較
float temp = fabs(a - b);
if ( -0.000001 < temp && temp < 0.000001)追問fabsf 是求絕對值嗎?
我嘗試設定這幾個宏
#define EPSILON_E4 (float)(1E-4)
#define EPSILON_E5 (float)(1E-5)
#define EPSILON_E6 (float)(1E-6)
?
#define CompareFloatA(a,b)?? ((fabs(a-b)<EPSILON_E4) ? 1 : 0)
#define CompareFloatB(a,b)?? ((fabs(a-b)/a < EPSILON_E4 || fabs(a-b)/b < EPSILON_E4) ? 1 : 0)
#define CompareFloatC(a,b)?? ((fabs(a-b)/a < EPSILON_E4 && fabs(a-b)/b < EPSILON_E4) ? 1 : 0)
總結
- 上一篇: 嵌入式研发人员的核心竞争力浅谈 .
- 下一篇: uclibc和glibc的差别