array element not equal to equivalent double

I have the following code:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
test=x==y
test = logical
0
the result of the test is 0 and I really don't understand why... Both are supposed to be double. Can somebody help?
(the final idea is to find the index of X in the array with the find function)

 採用された回答

Matt J
Matt J 2022 年 11 月 15 日
編集済み: Matt J 2022 年 11 月 15 日

1 投票

Because computers cannot do exact math. The difference between x and y beyond the 4th decimal place make this clear:
array=0.0001:0.0001:0.6;
x=0.0402
x = 0.0402
y=array(402)
y = 0.0402
x-y
ans = -6.9389e-18

2 件のコメント

Matt J
Matt J 2022 年 11 月 15 日
編集済み: Matt J 2022 年 11 月 15 日
Instead, you can do,
array=0.0001:0.0001:0.6;
x=0.0402;
idx=interp1(array,1:numel(array),x,'nearest')
idx = 402
Pierre-Vincent
Pierre-Vincent 2022 年 11 月 15 日
thanks :)

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

製品

リリース

R2022b

質問済み:

2022 年 11 月 15 日

コメント済み:

2022 年 11 月 15 日

Community Treasure Hunt

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

Start Hunting!

Translated by