1. 程式人生 > >[thinking]C語言flaot值比較

[thinking]C語言flaot值比較

最近面試,發現很多基礎的原理都還沒搞懂。自己平時沒有應用或接觸到的知識,也不會想著去學習。但遇到的更多,自己就會去探索的更多

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()針對整型。