[問題] 關於浮點數的運算

看板C_and_CPP (C/C++)作者 (環島旅行ing)時間16年前 (2009/07/07 22:59), 編輯推噓3(3013)
留言16則, 6人參與, 最新討論串1/4 (看更多)
每次來這問問題都很不好意思~~ 因為總覺得我問的問題都很淺...卻又常讓我的腦袋困擾很久 問題很短,如下: 我是用了double的長浮點數來運算 (因為資料量很大且要很精準) 但我發現到兩個浮點數相除竟然精準度有誤差.... EX: 8/1000000 它顯示的結果為0.000014 = =.... 我有爬文過 好像也沒人問類似這樣的問題~ 翻書是有說到用fabs的指令配合限定範圍 但我的8與1000000是已知的 有點不知道要怎放進去那個指令.. 難道真的沒有辦法很精確嗎??? 因為我是跑通訊系統的模擬 是希望沒有計算上的誤差 還有 我用的是DEV-C... 希望有人能解決我的疑惑了~ 感謝萬分!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.40.182

07/07 23:20, , 1F
囧 我用devC++他顯是 8e-006應該沒問題阿
07/07 23:20, 1F

07/07 23:24, , 2F
浮點數本來就會有誤差了 要精準恐怕要藉助其他library
07/07 23:24, 2F

07/07 23:34, , 3F
請去K IEEE754浮點數表示法的spec, 你就知道原生的浮點
07/07 23:34, 3F

07/07 23:35, , 4F
數資料型態"一定"會有誤差; 4 bytes或8 bytes本來就不可
07/07 23:35, 4F

07/07 23:35, , 5F
能毫無誤差的表達所有範圍內的實數的; 而且理論上各種應
07/07 23:35, 5F

07/07 23:36, , 6F
用理論上都有容許誤差, 要做到"完全無誤差", 我想計算時
07/07 23:36, 6F

07/07 23:37, , 7F
間上與儲存空間上會是另一個極度無法滿足的難點....
07/07 23:37, 7F

07/07 23:39, , 8F
若計算結果一定是有理數, 或許可以試做/用類分數型態@@"
07/07 23:39, 8F

07/08 00:09, , 9F
但至少 希望誤差是超級超級小的那種...小數點8位後才有誤
07/08 00:09, 9F

07/08 00:09, , 10F
差...唉 苦惱 感謝各位囉 我再想想^^
07/08 00:09, 10F

07/08 00:34, , 11F
你的程式碼應該有問題,誤差不可能如此大
07/08 00:34, 11F

07/08 00:38, , 12F
後來試了一下, 應該是樓上說的, 你的程式碼有問題....
07/08 00:38, 12F

07/08 00:40, , 13F
double的mentisa好像有50 bit, 理論精確度應該有
07/08 00:40, 13F

07/08 00:41, , 14F
1.xxxxx 10多位小數 eN 才對....@_@"
07/08 00:41, 14F

07/08 00:55, , 15F
不是一定有誤差, 像是 0.5 就不會有誤差 XD
07/08 00:55, 15F

07/08 01:14, , 16F
嗚~~抓人家語病....Q_Q~
07/08 01:14, 16F
文章代碼(AID): #1AKsAtUo (C_and_CPP)
文章代碼(AID): #1AKsAtUo (C_and_CPP)