Re: [問題] 請問如何 '較精確的' 轉換 float 到 do …

看板C_and_CPP作者 (被~~~切~~~八~~~段)時間12年前 (2012/04/05 11:11), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

04/05 12:49, , 1F
mantissa=23bits,normailze=1bits,有效位數 24 bits.
04/05 12:49, 1F

04/05 12:55, , 2F
2^-23 約等於 1.19e-007 . 可完全準確到小數後六位。
04/05 12:55, 2F

04/05 14:05, , 3F
了解了, 感謝.
04/05 14:05, 3F
文章代碼(AID): #1FVGrVyK (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FVGrVyK (C_and_CPP)