I have this small code. If statement fails to execute when x(i)<=10^0 say for 10^-5, 10^-1 or 10^0 even though matrix x contains the given elements

2 vues (au cours des 30 derniers jours)
clear all
clc
y=10^-8;
z=1;
x(1)=y;
for i=0:16
for j=1:9
x(z+1)=x(z)+y;
z=z+1;
end
y=y*10;
end
[~,m]=size(x);
u=1;
for i=1:m
if x(i)==0.01
u=u+1
end
end

Réponse acceptée

Michael Haderlein
Michael Haderlein le 10 Mar 2015
For the third time today, the answer is floating point arithmetics:
>> [f,ind]=min(abs(x-.01))
f =
1.7347e-18
ind =
55
So the 55th element of x is close to 0.01, but it actually isn't 0.01. Comparing double values, you should give some threshold under which two numbers are considered equal. E.q.
if abs(x(i)-.01)<1e-6

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by