array element not equal to equivalent double

13 vues (au cours des 30 derniers jours)
Pierre-Vincent
Pierre-Vincent le 15 Nov 2022
Commenté : Pierre-Vincent le 15 Nov 2022
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
Pierre-Vincent
Pierre-Vincent le 15 Nov 2022
thanks :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by