Strange behavior of if statement
Ältere Kommentare anzeigen
i have this very simple code that should return 'ans = 1' when run, since the sum of d is 1. However it returns the error message specified in the 'else' section instead, as if d didn't add up to 1. What's going on?
d = [.4 .1 .1 .1 .1 .1 .1];
if sum(d) == 1
sum(d)
else
error('d doesnt add up to 1')
end
Akzeptierte Antwort
Weitere Antworten (1)
It's correct. The sum isn't 1. It's approximately 1.
d = [0.4 0.1 0.1 0.1 0.1 0.1 0.1]; % leading zeros for readability, pls
sum(d) % that sure looks like 1
sum(d)-1 % but you just don't have the display resolution to see the error
gives
ans =
1.0000
ans =
-1.1102e-16
Beware simple equality tests when using floating point numbers. Test to within a tolerance.
tol=1E-12;
if abs(sum(d)-1)<tol
sum(d)
else
error('d doesnt add up to 1')
end
1 Kommentar
martino corrà
am 15 Apr. 2021
Kategorien
Mehr zu Programming finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!