Why can't I find the number 1.7?

2 次查看(过去 30 天)
Chris
Chris 2013-10-14
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
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
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
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?"

Yatin
Yatin 2013-10-14
Hi,
It has to do with the way floating point numbers are represented in MATLAB. May be this article helps:

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by