推 stupid0319:x += blah3 + blah4; 跟x += blah3 ;是一樣的 10/10 13:19
推 nowar100:十一誡 10/10 13:19
看了,但我以為至少問題會出現在 double 的末位, float()後應該看不到差異才對,
→ stupid0319:請看一下運算符優先順序 10/10 13:19
→ nowar100:私以為一樓會先做 temp=blah3+blah4 再做 x+=temp; 10/10 13:21
推 stupid0319:好像我記錯了,上面當作沒看見 10/10 13:25
→ yauhh:真有趣,是a+b+c+d與(a+b)+(c+d)無法求對等值的毛病. 10/10 13:41
想請教前輩, 那該如何運算才能獲得較為正確的值?
※ 編輯: wahaha99 來自: 220.132.126.29 (10/10 13:47)
推 sjgau:浮點數的運算,一定會產生誤差。所以,你要做的事情是 10/10 14:00
→ sjgau:面對他,而不是逃避。你必須了解他的一些事情,如何處理 10/10 14:01
推 stupid0319:看似簡單的運算,卻有著複雜的過程,真相永遠只有一個 10/10 14:05
推 yauhh:其實你可以想,既然是平均值,a+b+c+d的結果才是全對嗎? 10/10 14:08
→ yauhh:或許你要一個稍微正確的平均值,那麼第一寫法也可以用啦. 10/10 14:08
→ yauhh:除非那個精確值對程式是決定成敗的關鍵,才去解決問題. 10/10 14:10
精度的確是有決定性... 坦白說就是因為誤差, 所以我才會取四值平均....
(本來使用一組常數參數就好, 就是因為一直有誤差, 我才用四組下去跑然後取平均....)
但是實在不知道什麼是對的或精確的... 市面上有這方面的書籍嗎?
※ 編輯: wahaha99 來自: 220.132.126.29 (10/10 15:12)
→ tropical72:你的研究對於精準度有很大的要求嗎?你的研究對於浮點 10/10 15:51
→ tropical72:數有很頻繁的運算嗎? 10/10 15:52
我是在開發自己的一些resampler的演算法, 原始資料是 float,
用 double 運算是為了提高精確度, 但經過軟體分析後發現好像精確度還沒有push到極限,
改用 long double 也完全沒有任何變化.... 至於頻繁...嗯, 還滿頻繁的 @@
※ 編輯: wahaha99 來自: 220.132.126.29 (10/10 16:17)
→ yauhh:參考書籍請先找數值分析書籍看一看 10/10 21:55