想到的一個辦法是abs(num)&<10e-8;
0就是0。如果num == 0.0為假,那麼num就不為0.
你說的這個是處理實際數據時候的誤差問題。這和C++或者編程無關,任何數據處理,在存在誤差的前提下,絕大多數情況都只能判斷兩個結果是否足夠接近,而不能直接判斷相等。
而具體多大範圍內可以視為「足夠接近」。這取決於你數據原本的測量或者記錄的誤差、你的具體運算過程、以及你需要的精度。不是隨便拿一個你覺得很小的數就可以的。
一般情況,題主的方法已經能湊合了(即再一個很小範圍內的數作為0)。浮點數是不精確的,應當實際情況實際考慮。我不知道題主希望的是完全精確地為0(+/- 0.0000000....0f),還是想表示我想像中的為0(例如覺得(x / y) * y - x的結果一定是0的這種為0,即數學上來說,它應該等於0)。
精確比較,num == 0.0
很多人不推薦這種寫法,但是事實上這是保證num確確實實等於0(包括+0.0和-0.0)的判斷寫法,我們配合一個可以被float精確表示的數: