1. 程式人生 > >浮點數與“0”的比較

浮點數與“0”的比較

浮點數存在誤差問題,所以我們不能直接用浮點數與“0”進行比較,直接進行比較是不正確的。例如我們有一個浮點數a=0.01,這個數我們輸出時設定保留一位小數,那麼a打印出來會變成0.0。再下來我們用這個打印出來的值與"0"比較,我們是不是會認為0.0與0是相等的,但其實這個數原來是a=0.01,a與0是不相等的。在假設有一個浮點數a=-0.01,列印時設定保留一位小數,打印出來會變成0.0,再下來我們用這個打印出來的值與"0"比較,我們是不是會認為0.0與0是相等的,但其實這個數原來是a=-0.01,a與0是不相等的。當-0.01<a<0.01時我們都設定成保留一位小數那麼其中的數打印出來都會變成0.0,這個時候都與"0"相等。所以我們在進行浮點數比較的時候要把誤差值考慮進去。定義一個巨集 #define EPS 0.000001 ,定義一個float x,進行x與0的比較。1)x等於0     -EPS<=x && x<=EPS2)x大於0     x>=EPS3)x小於0     x<=-EPS