MATLAB: Matlab (R2015a) seems to be computing wrongly a simple recurrent sum. Below is a simple code that shows it. I get that Answer=’no’, AnResp=’yes’ however t4(401)=0.012. Does anyone have an idea of what is going on here

floating pointfor loopsum

t4(1)=0;
Dt4=3.0e-5;
for kk=2:401
t4(kk)=t4(kk-1)+Dt4;
end
if t4(401)==0.012
Answer='yes'
else
Answer='no'
end
if t4(401)>0.012
AnResp='yes'
else
AnResp='no'
end

Best Answer

It is not that MATLAB has computed incorrectly. It is that you don't appreciate how numbers are stored in a floating point form.
It does not equal 0.012. In fact, 0.012 does not equal 0.012, since you cannot represent 0.012 exactly in a binary representation of floating point arithmetic.