[討論] 請問數值的表示問題

作者: jasonlee1001 (Jason)   2016-12-25 10:49:56
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 ?
作者: sppmg (sppmg)   2016-12-25 13:23:00
數值儲存問題,因為電腦中用二進位,浮點數只能存成接近的數值(所以銀行據說使用BCD編碼存,就不會漏掉小數了)。顯示數值後面可能還有極小的數值差異。round(pi,3) ,四捨五入至3位小數所以if比較兩浮點時,千萬不要用==比,改用abs(a-b)<1e-10這形式。整數(integer型態)就沒這問題。
作者: rex0707 (我就是我)   2016-12-27 13:11:00
machine error
作者: tn00364361 (小氵斿)   2016-12-27 20:57:00
machine epsilon

Links booklink

Contact Us: admin [ a t ] ucptt.com