作者jasonlee1001 (Jason)
看板MATLAB
標題[討論] 請問數值的表示問題
時間Sun Dec 25 10:49:56 2016
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://webptt.com/m.aspx?n=bbs/MATLAB/M.1482634199.A.C2E.html
1F:推 sppmg: 數值儲存問題,因為電腦中用二進位,浮點數只能存成接近的 12/25 13:23
2F:→ sppmg: 數值(所以銀行據說使用BCD編碼存,就不會漏掉小數了)。顯示 12/25 13:23
3F:→ sppmg: 數值後面可能還有極小的數值差異。 12/25 13:23
4F:→ sppmg: round(pi,3) ,四捨五入至3位小數 12/25 13:25
5F:→ sppmg: 所以if比較兩浮點時,千萬不要用==比,改用abs(a-b)<1e-10 12/25 13:29
6F:→ sppmg: 這形式。整數(integer型態)就沒這問題。 12/25 13:29
7F:→ rex0707: machine error 12/27 13:11
8F:推 tn00364361: machine epsilon 12/27 20:57