Re: [問題] 基本程式設計概念的問題
※ 引述《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
01/22 22:15, 4F
討論串 (同標題文章)