Re: [問題] 基本程式設計概念的問題

看板Programming作者 (IWH68S0XZ8M89)時間16年前 (2008/01/21 11:40), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《sjgau (sjgau)》之銘言: : 底下,我用 Dev-C++ 實作,得到的結果和 您的構想不同。 : 當然啦!我不會否定 您的想法,我只是想說明一件事, : 程式設計這種東西,一定要實際做過一遍,才能拿來說嘴。 : 否則,很容易得到不同的結果。 : 我很清楚怎麼 一回事情,這種東西討論起來, : 沒完沒了。 well, 只是個四捨五入的差別而已 FPU計算時的四捨五入機制把它處理掉了 也許要用大一點的數才能看得出差別 (例如1.0/11111111.0再乘回來之類的) (←當然這也是亂說的也沒試過) 講個經典的例子比較能夠感受得到這個問題的重要性: 幾個月前Excel 2007爆出大Bug 當它計算850*77.1時不是得到正確的65535 卻竟然出現100000的答案 微軟的官方解釋是 http://blogs.msdn.com/excel/archive/2007/09/25/calculation-issue-update.aspx 據說是因為浮點數轉字串的程式裡因為浮點數誤差 導致這些原本是65535-2^(-35)等的數字正好戳中程式的bug 才會吐出100000的答案 這個浮點數誤差的來源正是那個77.1 77.1表示成二進位時那個.1是二進位循環小數 所以再乘850回去時這個誤差就放大到四捨五入蓋不掉 然後這個誤差又戳中了那段bug才會有這個結果 -- 順便提一下 手邊有Excel 2007卻還沒修好(或還沒Windows Update過)的人 這裡是官方patch: http://support.microsoft.com/kb/943075/ (即是Windows Update上的那一份 KB943075/KB943076) -- 実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」 亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」 実琴:「難道你沒有男人的尊嚴了嗎?!」 亨:(斷然道)「沒有。在節衣縮食生活吃緊學生面前,沒有那種東西。」 --プリンセス・プリンセス 第二話 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.250.80

01/21 11:47, , 1F
不只是 四捨五入的問題。還牽涉到 浮點數
01/21 11:47, 1F

01/21 11:48, , 2F
如何儲存,計算,顯示的問題。
01/21 11:48, 2F

01/22 22:14, , 3F
還有不少細節方面的啦 不過如你所說
01/22 22:14, 3F

01/22 22:15, , 4F
這東西要細講就沒完沒了了 XD
01/22 22:15, 4F
文章代碼(AID): #17b1GLFQ (Programming)
討論串 (同標題文章)
文章代碼(AID): #17b1GLFQ (Programming)