[thinking]C語言flaot值比較
阿新 • • 發佈:2018-12-30
最近面試,發現很多基礎的原理都還沒搞懂。自己平時沒有應用或接觸到的知識,也不會想著去學習。但遇到的更多,自己就會去探索的更多。
1.int型比較
a == b;//( != ,<,>,<=,>=)
2.bool型比較
a == true;//false
3.指標比較
a. if(a == NULL);
b. if(a != NULL);
c. str或mem系列函式;(memcmp,strcmp......)
4.float型比較
自己想到2種實現的方法:
4.1 設定一個值與兩個float型的差的絕對值作比較,當小於或等於這個值的時候,就認為是相等的;
4.2 放大法,通過放大float的值再強制轉換成int型作比較;
//1.設定一個精確值,通過兩個float值相減取它們的絕對值,再和這個精確值比較 int compareFloat() { const float ep = 0.00001; float a = 1.00189; float b = 1.00187; if(fabs(a-b) <= ep) { printf("equal\n"); } else printf("no equal!\n"); return 0; }
簡單的說明下:fabs()針對浮點數,abs()針對整型。