看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 我在"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
akasan:http://tinyurl.com/ydblq8z 03/13 00:40
cloudlim:多謝囉~洗完澡再來慢慢看 XD" 03/13 00:44
tropical72:哈..所謂的 指數 和 尾數 都是以二進制為基礎, 03/13 03:18
tropical72:你文章所舉的例都是以十進制為基礎,所以看不出來誤差 03/13 03:18
nowar100:z-8-11 可能會有幫助 03/13 06:57