作者cloudlim (Oswin)
看板C_and_CPP
標題[問題] 請問在C++中float的儲存值
時間Sat Mar 13 00:23:04 2010
遇到的問題: (題意請描述清楚)
我在"C++程式設計(2/e), 張耀仁"中看到
---------------------------------------------
C++指令 在電腦內部實際的儲存值
---------------------------------------------
float a=0.1; 0.10000000149011611938...
double b=0.1; 0.10000000000000005555...
float c=0.01; 0.00999999977648258209...
double d=0.01; 0.01000000000000000021...
----------------------------------------------
不懂為什麼實際儲存的值會是這樣?@@"
C++中 符點數的記錄方式不是儲存指數跟尾數嗎?
e.g, 0.1 = 1 X 10^-1, 指數=-1, 尾數=1
float type的話 24 bits for 尾數, 8 bits for 指數
所以在我的認知中會以這樣的方式儲存起來:
000000000000000000000001 11111111
(尾數=1) (指數=-1)
如果是這樣的話
電腦不是可以很精確的知道是0.1嗎?
為什麼會有上表中的誤差呢?@@"
問題很爛的話請原諒我是個初學者
麻煩高手指點了
感恩^^"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.167.135.1
※ 編輯: cloudlim 來自: 118.167.135.1 (03/13 00:25)
推 loveme00835:要先轉換成"二進位科學記號"才能知道怎麼存, 請參考 03/13 00:30
→ loveme00835:IEEE 754 03/13 00:30
→ cloudlim:多謝囉~洗完澡再來慢慢看 XD" 03/13 00:44
→ tropical72:哈..所謂的 指數 和 尾數 都是以二進制為基礎, 03/13 03:18
→ tropical72:你文章所舉的例都是以十進制為基礎,所以看不出來誤差 03/13 03:18
→ nowar100:z-8-11 可能會有幫助 03/13 06:57