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)

 Réponse acceptée

Matt J
Matt J le 15 Nov 2022
Modifié(e) : Matt J le 15 Nov 2022
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 commentaires

Matt J
Matt J le 15 Nov 2022
Modifié(e) : Matt J le 15 Nov 2022
Instead, you can do,
array=0.0001:0.0001:0.6;
x=0.0402;
idx=interp1(array,1:numel(array),x,'nearest')
idx = 402
thanks :)

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by