DAVID馬蘭:現在,讓我們打擊你的頭腦。 原來,在現實世界中1分 10的確1/10,或0.1。 但在計算機只具有有限的 位,用以號 代表數字,你不能總是 表示相同的1/10號與 完美的精確度。 換句話說,計算機有時有 作出判斷來電和未 一定代表你數 想為你打算盡可能準確。 例如,假設我回去成 這個程序並更改為0.1, 哦,0.28,從而表明 我想的printf對printf到 28位的精度。 現在讓我們保存和編譯程序, 這個時候用make floats2。 用點斜線floats2運行它。 而且,親愛的上帝,這次我看到的不是0.1, 但0.10000000,這是非常 好為止。 但隨後,14901161193847656250。 那麼,這是怎麼回事? 嗯,事實證明,一個是浮動 通常存儲在計算機的內部 與32位。 32顯然是一個有限的數字,這 意味著你只能代表 由32比特的有限數 的浮點值。 不幸的是,這意味著該 電腦不能代表所有可能的 浮點數或實數, 存在於世界各地, 因為它只有這麼多的位。 還等什麼電腦是顯然 在這種情況下所做的是代表1/10至 最接近的可能浮動 點值,它可以。 但是,如果我們看看,因為我們這裡有,到28 小數位,我們開始看到, 不精確。 因此,這是一個問題 沒有完美的解決方案。 我們可以用一個雙而非浮動, 這往往要使用64比特作為 置為32。 但是,當然,64也是有限的, 所以這個問題會 即使雙打依然存在。