看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《wahaha99 (此方不可長)》之銘言: : float 在超過本身的七位有效值後面仍然有一大串無效值, : 這點是本來就知道的, 但我發現在經過 double( ) 轉換後, : 這些無效值會被完完整整的搬過去。 : 我現在想請教的是, 有沒有什麼方法, 可以把float搬過去的同時, : 把這些無效值去除掉。 : 簡單來說就像是: : float double : 0.xxxxxxxyyyyyy => 0.xxxxxxx000000 : x是有效部分, y是無效部分 : 我想過轉換回string處理, 但c++的string實在不太快; : 使用上也不太友善。(大概是因為我還不熟悉) : 不知道有什麼好方法可以建議呢? 謝謝。 這篇已經有大大解答了, 我想問的是 "七位有效值" 是怎麼得到的? 我看到一個題目如下: What number of digits that can be accurately stored in a float (based on the IEEE Standard 754)? 答案是 6 指的是小數點後六位嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 96.55.113.197
EdisonX:mantissa=23bits,normailze=1bits,有效位數 24 bits. 04/05 12:49
EdisonX:2^-23 約等於 1.19e-007 . 可完全準確到小數後六位。 04/05 12:55
supisces:了解了, 感謝. 04/05 14:05