Odpowiedź animal_magic jest prawidłowa, dlatego należy dodawać liczby od najmniejszej do największej, ale chcę podać przykład, aby pokazać, dlaczego.
Załóżmy, że pracujemy w formacie zmiennoprzecinkowym, który zapewnia oszałamiające 3 cyfry dokładności. Teraz chcemy dodać dziesięć liczb:
[1000, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Oczywiście dokładna odpowiedź to 1009, ale nie możemy uzyskać tego w naszym 3-cyfrowym formacie. Zaokrąglając do 3 cyfr, najdokładniejszą odpowiedzią, jaką otrzymujemy, jest 1010. Jeśli dodamy najmniejszą do największej, w każdej pętli otrzymamy:
Loop Index s
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 1009 -> 1010
Otrzymujemy więc najdokładniejszą możliwą odpowiedź dla naszego formatu. Załóżmy teraz, że dodajemy od największego do najmniejszego.
Loop Index s
1 1000
2 1001 -> 1000
3 1001 -> 1000
4 1001 -> 1000
5 1001 -> 1000
6 1001 -> 1000
7 1001 -> 1000
8 1001 -> 1000
9 1001 -> 1000
10 1001 -> 1000
Ponieważ liczby zmiennoprzecinkowe są zaokrąglane po każdej operacji, wszystkie dodatki są zaokrąglane, zwiększając nasz błąd z 1 do 9 z dokładności. Teraz wyobraź sobie, czy twój zestaw liczb do dodania miał 1000, a potem sto jeden, czy milion. Zauważ, że aby być naprawdę dokładnym, chciałbyś zsumować najmniejsze dwie liczby, a następnie zastosować wynik w swoim zestawie liczb.