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

看板Programming作者 (Bird)時間18年前 (2008/01/21 10:08), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/5 (看更多)
※ 引述《trickli (哲)》之銘言: : (1) Rewrite the following pseudo-code if statement expression : in a more realistic manner assuming that variables a and b are : of type real: : if (a = b) then : .... threshold = 0.00001 # 誤差容許值 if (a > b - threshold) and (a < b + threshold) : (2) Explain why this is necessary. : 這題好像是關於兩個實數不太可能相等的問題,但不知道該怎麼作答。 : 這是澳洲某大學 2006 年期末考題,請各位高手幫忙。 : 謝謝。 因為浮點數有精確度的限制 float a = 1; a /= 3; a *= 3; if (a==1) print "Yes"; else print "No"; 你應該會得到No的答案 因為執行完第二行時 a的數值應該是1/3 寫成十進位是0.3333333333.... 電腦是用二進位記符點數的,而且有位數的限制 應該會變成0.0101010101.....循環 執行完第三行 a*=3 就變成0.999999999999999999998之類的東西 最後這個數就小於一了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.99.126

01/21 11:31, , 1F
謝謝!原因的部分跟我想的差不多
01/21 11:31, 1F

01/21 11:36, , 2F
至於第一部分的答案的確是不錯的想法
01/21 11:36, 2F
文章代碼(AID): #17a_we4W (Programming)
文章代碼(AID): #17a_we4W (Programming)