[讨论] 请问数值的表示问题

楼主: 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