I have this code which is behaving differently for decimal and integer values. Where am I missing??
古いコメントを表示
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 件のコメント
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
2018 年 5 月 31 日
Paolo
2018 年 5 月 31 日
Thanks for the clarification Stephen, I forgot to take into consideration the accumulating error.
akash sonnad
2018 年 5 月 31 日
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Entering Commands についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!