看板 MATLAB 關於我們 聯絡資訊
x=4.181-4.169 x = 0.0120 >> y=4.169-4.157 y = 0.0120 >> x-y ans = 8.8818e-016 請問大家有甚麼辦法可以讓 x-y = 0 ? 我另外算了以下: >> x=4.157-4.146 x = 0.0110 >> y=4.146-4.135 y = 0.0110 >> x-y ans = 0 為什麼這個的結果又是 0 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.212.167 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1482634199.A.C2E.html
sppmg: 數值儲存問題,因為電腦中用二進位,浮點數只能存成接近的 12/25 13:23
sppmg: 數值(所以銀行據說使用BCD編碼存,就不會漏掉小數了)。顯示 12/25 13:23
sppmg: 數值後面可能還有極小的數值差異。 12/25 13:23
sppmg: round(pi,3) ,四捨五入至3位小數 12/25 13:25
sppmg: 所以if比較兩浮點時,千萬不要用==比,改用abs(a-b)<1e-10 12/25 13:29
sppmg: 這形式。整數(integer型態)就沒這問題。 12/25 13:29
rex0707: machine error 12/27 13:11
tn00364361: machine epsilon 12/27 20:57