Why can't I find the number 1.7?
2 次查看(过去 30 天)
显示 更早的评论
Why does this return an empty answer for 1.7, but not 1.6 or 1.8? I am using an older version of Matlab (2006a), I have not tried this on a newer version yet.
test=0:0.1:5000;
>> find(test==1.7);
ans = Empty matrix: 1-by-0
>> find(test==1.8);
ans = 19
>> find(test==1.6)
ans = 17
4 个评论
Jan
2013-10-14
This is not an error and it does not concern Matlab only, but this happens for other languages also in exactly the same way.
John D'Errico
2013-10-14
This is a problem only to the extent that you don't understand floating point numbers and how they are stored. Time to read the FAQ.
回答(2 个)
Carla
2013-10-14
It's because your computer can't store decimal numbers in an exact form - there is always small but finite roundoff error in floating-point arithmetic. Have a look at this FAQ: http://matlab.wikia.com/wiki/FAQ
In particular, look at the section entitled "Why is 0.3 - 0.2 - 0.1 (or similar) not equal to zero?"
0 个评论
Yatin
2013-10-14
Hi,
It has to do with the way floating point numbers are represented in MATLAB. May be this article helps:
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!