Поэтому при сложении на компьютере массива чисел надо сначала складывать наименьшие, иначе мы их потеряем.
Давайте поясню, что-ли. Есть такая классическая задачка по программированию - вычислить сумму
и сравнить с точным значением суммы до бесконечности (это
). Ну все начинают суммировать:
Код:
float n, s=0;
for (n=1; n<=10000000; ++n)
s+=1./(n*n);
и получается ужасно неправильно. Потом им объясняют, что складывать надо в обратном порядке:
Код:
float n, s=0;
for (n=10000000; n>=1; --n)
s+=1./(n*n);
, и тут же всё получается правильно. Проблема - именно та, которую мы тут обсуждаем. У меня на этих примерах разница в 4-м знаке набегает: 1.644725 vs 1.644934