基礎知識 | 每日一練(128)
- 2019 年 10 月 7 日
- 筆記
小林:大多數電腦都是用二進制來表示浮點和整數的。在十進制里, 0.1 是個簡單、精確的小數, 但是用二進制表示起來卻是個循環小數 0.0001100110011 …。所以3.1 在十進制內可以準確地表達, 而在二進制下不能。在對一些二進制中無法精確表示的小數進行賦值或讀入再輸出時, 也就是從十進制轉成二進制再轉回十進制, 你會觀察到數值的不一致. 這是由於編譯器二進制/十進制轉換例程的精確度引起的, 這些例程也用在 printf 中。
讀者:執行一些開方根運算, 為什麼是得到一些不同尋常的數字?
小林:確定你用了 #include <math.h>, 以及正確說明了其它相關函數返回值為double。另外一個需要注意的庫函數是 atof(), 其原型說明在 <stdlib.h> 中。