Why does this algorithm yield an 'incorrect' result?

The following code yields cumul_total = 2.000000000026658e+05 . What is the '26658' on the end? Why does this occur?
Thank you
A = (0.2);
cumul_total = (0.0);
for iii = 1:1e6
cumul_total = cumul_total + A;
end
cumul_total

 採用された回答

DGM
DGM 2022 年 1 月 18 日
編集済み: DGM 2022 年 1 月 18 日

1 投票

This is a consequence of accumulating the small errors inherent to floating-point representations of numbers.
A = 0.2;
S = 0;
% watch the error
format long
for k = 1:100
S = S+A
end
Note the remarks on accuracy and pitfalls here.

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeElementary Math についてさらに検索

質問済み:

2022 年 1 月 18 日

編集済み:

DGM
2022 年 1 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by