我比較C中的簡單浮點數和雙精度浮點數,特別是它們的值都是8.7。現在我將8.7分配給每個變量,當我打印時,兩個值的結果都是8.7000。爲什麼編譯器添加了這些零。我想問的主要問題是還有沒有更多的數字,我沒有看到,如在尾隨零後隱藏。我讀過我不應該用浮點數來比較浮點數,因爲精度不夠高,但是我認爲這樣一個小數值肯定可以存儲8.7個具有一定準確度的數據,以便將其與另一個8.7數值進行比較?C浮點數和雙重比較
我唯一擔心的是它實際上是在記憶中的某個地方表現爲例如8.70000003758什麼的,這是拋出我的比較?我試圖%.20f給printf看到任何進一步的數字可能被隱藏,但我認爲這是沒有,否則那裏數的整個準確性剛剛創建的數字更改爲8.6918734634834929或類似的東西。
[如何在C中的內存中表示FLOAT編號]可能的重複(http://stackoverflow.com/questions/6910115/how-to-represent-float-number-in-memory-in-c) –
1/3是一個很小的值。但是沒有固定精度的十進制表示可以精確地存儲它。你的推理是完全無效的。 –
如果你真的想看到不同之處,可以嘗試在gdb中運行應用程序並查看兩個變量。您將能夠看到內部表示。你將不得不查看浮點數如何表示在上面的評論。 – bruceg