I have this code which is behaving differently for decimal and integer values. Where am I missing??
Show older comments
x=0.1;
y=0.1;
a=[x,y];
b=[0.2,0.2];
tf=isequal(a,b);
while tf==0
x=x+(0.01);
y=y+(0.01);
a=[x,y];
tf=isequal(a,b);
end
disp(a);
if i replace the x, y and incremental values by integers, it works !! for ex as shown below
x=1000;
y=1000;
a=[x,y];
b=[2000,2000];
tf=isequal(a,b);
while tf==0
x=x+1;
y=y+1;
a=[x,y];
tf=isequal(a,b);
end
disp(a);
5 Comments
EDIT: See Stephen's answer below.
A possible workaround is to convert the floating point numbers to characters to compare them:
tf=(isequal(sprintf('%c',a),sprintf('%c',b)));
dpb
on 31 May 2018
Paolo
on 31 May 2018
Thanks for the clarification Stephen, I forgot to take into consideration the accumulating error.
akash sonnad
on 31 May 2018
Accepted Answer
More Answers (0)
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!