作者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/cn.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