Loop Trough Time t = t+dt
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a simple code like this
t = 1380;
dt = 0.1
for i = 1:1000
t = t+dt;
disp(t)
end
I believe the answer should be obvious that the final answer should be
t = 1480. I dont know why Matlab shows the answer a little bit different which is 1479.99999999991.
Anyone know why?
0 Kommentare
Antworten (1)
Star Strider
am 13 Nov. 2019
You have encountered floating-point approximation error.
3 Kommentare
Star Strider
am 18 Nov. 2019
Yes.
Change it to:
if abs(t - 1400) < 0.05
a = 2
end
Since the code counts up by ‘dt’, this will introduce a tolerance in the calculation, so the floating-point approximation error are taken into account.
To see this graphically:
t = linspace(1399, 1401);
figure
plot(t, (abs(t - 1400) < 0.05))
grid
That will show the effect of using the inequality to test for a range of values for ‘t’ near 1400.
Experiment to get the result you want.
darova
am 18 Nov. 2019
Don't use equal sign for float numbers
if abs(t-1400) < 1e-6 % tolerance
a = 2;
end
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!