Calculation Error sum float

I Write This Code:
clc;
clear;
format long
a=1;
for n=1:1:100
a=a+.1;
end
a
and answer is:
a =
10.999999999999979
!!!!! Why not: a= 11
How I Can Solve it?

1 commentaire

See Azzi's link below. But for your particular case this is the decimal equivalent of the closest number to 0.1 in IEEE double format:
>> num2strexact(0.1)
ans =
0.1000000000000000055511151231257827021181583404541015625
You can find num2strexact here:

Connectez-vous pour commenter.

Réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 16 Mai 2014

1 vote

2 commentaires

Maha dasra
Maha dasra le 16 Mai 2014
How I Can Solve it?
José-Luis
José-Luis le 16 Mai 2014
  1. Use a computer that doesn't use the binary system. There are a few such strange base 10 machines out there.
  2. Try variable precision arithmetic. Either with the symbolic toolbox or the excellent vpa from the file exchange.

Connectez-vous pour commenter.

Tags

Commenté :

le 16 Mai 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by