How can the "find" function fail at finding elements in an array?

Dear all,
I have used many times the "find" function with very good results... until now. Here is my VERY SIMPLE code:
a = [0.145:0.0005:0.175];
index = find(a == 0.16)
index =
Empty matrix: 1-by-0
index2 = find(a == 0.15)
index2 =
11
So... both numbers (0.15 and 0.16) EXIST in the array named "a", however, ONLY 0.15 IS FOUND...
I have checked this in R2015a and R2013b with the same results... Does anybody haves an idea of what is going on???
Best regards, Ion

 採用された回答

Star Strider
Star Strider 2016 年 10 月 29 日
編集済み: Star Strider 2016 年 10 月 29 日

0 投票

You have discovered ‘floating point approximation error’.
EDIT
To illustrate:
a = [0.145:0.0005:0.175];
index = find(a <= 0.16, 1, 'last')
result = a(index)
err = result - 0.16 % Floating Point Error
result =
0.16
err =
-2.7756e-17

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

タグ

質問済み:

2016 年 10 月 29 日

編集済み:

2016 年 10 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by