兩個Double數值比較相等時Boolean輸出不是True 不知道這是什麼問題

兩個Double數值比較相等時Boolean輸出不是True 不知道這是什麼問題
TEST.vi

多年以前我也有類似的問題
直到我膝蓋中了一箭…

不是啦,簡單來講浮點倍精數使用0.5(1/2)+0.125(1/8)組成0.625,
但是當他其實是0.5(1/2^1)+0.125(1/2^3)+0.000 000 95367431640625(1/(2^20))時
在絕大多數的顯示format下,他還是會讓你看到0.62500....

真正要比對兩個浮點倍精數是否相等
1.在電腦科學中是比對他的所有64位元bitwise-XOR,有相異位元就會有位元傳回1
2.在數值分析中是要相減比較他給出的error是否小於門檻值或是否收斂
3.在一般寫程式,你本來就幾乎確定他本來就是一樣的話,就是把他轉換成Int32,在C-like程式語言中,他會無條件捨去,你再去比較即可。 

MingYen42450.5562615741