2013-10-25 25 views
-9

Strange floating point comparision爲什麼在VS2010中1.0f小於0.0f?

正如你在圖片中看到的,rotCount是1.0f。 但是,在將rotCount與0.0f, 進行比較時,調試器會輸入if語句,這不應該發生。

我使用默認調試模式的Visual Studio 2010關閉優化。 這是拆開這段代碼。 enter image description here

看來,fcomp之後,沒有測試和跳轉匯編代碼生成。 這是否被視爲VS2010中的錯誤?有人知道爲什麼

+10

程序的屏幕截圖在問題中不適用。他們打破可用性和複製粘貼。 –

+11

我學到的一件事:當你認爲你已經發現了一個編譯器錯誤,然後以幾乎與1無法區分的概率,這是你自己代碼中的一個錯誤。 – molbdnilo

+0

@molbdnilo除了談論MSVC時。 –

回答

31

在if語句結尾處有分號,所以if不控制塊。刪除它

+3

我喜歡這個問題是如何得到一堆upvotes,第二個你回答他們都來到這裏:p – yamafontes

+0

@KepaniHaole「一堆」== 1? – Shoe

+1

答案是個好地方:我盯着反彙編器一分鐘,看不到它。在此之前,這個問題似乎很有趣。 – Bathsheba

相關問題