colon operator rounding problem
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ambroise
am 10 Jul. 2015
Bearbeitet: Stephen23
am 10 Jul. 2015
Hello everyone!
I encountered a problem in one of my code, using the semi colon operator like this:
a = 0:0.1:120;
will not give me exactly what I want, it does return 0, 0.1, 0.2 etc, but with a small imprecision (equal to eps actually)
the following code :
a = 0:0.1:120;
disp(a(20));
disp(a(20)-1.9)
isequal(a(20),1.9)
is returning:
1.9
2.22044604925031e-16
ans =
0
Any help ? I really need this isequal(a(20),1.9) to return 1...
thanks !
Akzeptierte Antwort
bio lim
am 10 Jul. 2015
Try it like this.
a=(0:1200)/10;
disp(a(20));
disp(a(20)-1.9);
isequal(a(20),1.9)
Your previous code was not returning 1 because of rounding errors when doing finite precision arithmetic.
3 Kommentare
bio lim
am 10 Jul. 2015
Bearbeitet: bio lim
am 10 Jul. 2015
If you multiply it by decimals, such as 0.1, again you get rounding errors. That is why, I specifically wrote 10 in the first place. If you actually check your initial code, you can see that until a(4), it returns 0 but starts getting rounding error from that point.
1/0.1 returns 10 because, 1 is defined and when you divide you are going to get 10 without a rounding error.
Weitere Antworten (2)
Steven Lord
am 10 Jul. 2015
See question 1 in the Mathematics section of the FAQ for a more detailed explanation of this behavior.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!