怎么樣判斷兩個浮點數(shù)精確相等?一般來說是兩個數(shù)差的絕對值和一個極小值比較,如果小于這個極小就,就認為是相等。
前兩天在LinuxSir上看到一個貼子,討論這個問題,發(fā)現(xiàn)可以精確比較相等。
代碼如下:
發(fā)現(xiàn)用這種方法在Ubuntu8.04,GCC4.24的情況下通過。不過這種方法個人感覺只能用來比較一個程序內(nèi)部生成的浮點數(shù)的運算。
如果兩個浮點數(shù)是由兩臺不同平臺的機器運行的程序生成,或者不同編譯器生成的程序運行產(chǎn)生,則可能根據(jù)無法得到相等的結果。
因現(xiàn)在只有x86的機器,誰手上有ARM平臺之類的,請幫忙測試一下。謝謝
當直接用==比較兩個浮點數(shù)時,隨著整數(shù)部分增加,精度急劇下降
當比較0.000...001和0.000.。0011時,到65個零都沒有問題,能得到正確結果 當比較1.000..001和0.000.00011時,小數(shù)點后14個零時,就不能得到正確結果。
Powered by: C++博客 Copyright © 絕對零度