Słowo "zaokrąglenie" dla wartości liczbowej oznacza zastąpienie jej inną wartością, która jest w przybliżeniu równa, ale ma krótszą, prostszą lub bardziej przejrzystą formę. Na przykład, 23,74 USD może być zaokrąglone do 24 USD, lub ułamek 312/937 może być zaokrąglony do 1/3, lub wyrażenie 2 jak 1,41. Zaokrąglanie wykonuje się zwykle celowo, aby uzyskać wartość łatwiejszą do zapisu, prezentacji lub obliczeń, ale także by wskazać sensowną dokładność wyniku — np. liczba obliczona jako 123,456, znana jednocześnie tylko do kilkuset jednostek, lepiej jest podana jako "około 123,500".
Z drugiej strony, zaokrąglenie wprowadza błąd zaokrąglenia, czyli różnicę między wartością rzeczywistą a jej zaokrągloną reprezentacją. Zaokrąglanie jest niemal nieuniknione w wielu obliczeniach: przy dzieleniu liczb całkowitych lub w arytmetyce stałopunktowej; przy obliczaniu funkcji matematycznych, takich jak pierwiastki kwadratowe, logarytmy i sinusy; czy przy użyciu zmiennoprzecinkowej reprezentacji o skończonej liczbie cyfr znaczących. W sekwencjach operacji błędy te zwykle się kumulują i w pewnych przypadkach prowadzą do dużego zniekształcenia wyników.
Zaokrąglanie ma wiele podobieństw do kwantyzacji, która pojawia się, gdy wielkości fizyczne muszą być kodowane liczbami lub sygnałami cyfrowymi. W obu przypadkach nieciągłość reprezentacji powoduje utratę informacji i powstanie błędu.
Metody zaokrąglania
- Zaokrąglanie do najbliższej (round to nearest) — wartość jest zaokrąglana do najbliższej dopuszczalnej reprezentacji. Gdy wartość leży dokładnie w połowie drogi między dwoma reprezentacjami (tzw. przypadek "połowy"), stosuje się regułę rozstrzygającą (patrz niżej).
- Zaokrąglanie "half up" (zaokrąglanie pół w górę) — przy połówce zawsze zaokrągla się w górę (1,5 → 2; −1,5 → −1 lub −2 zależnie od definicji "w górę" względem zera). Jest to intuicyjne, ale może wprowadzać systematyczny błąd przy dużych ilościach danych.
- Round half to even (zaokrąglanie do parzystej) — przy połówce wybiera się liczbę o parzystej cyfrze końcowej (np. 2,5 → 2; 3,5 → 4). To reguła stosowana m.in. w standardzie IEEE 754; zmniejsza tendencyjne przesunięcie średniego błędu przy powtarzających się operacjach.
- Zaokrąglanie w dół (floor) i w górę (ceil) — floor(x) to największa liczba mniejsza lub równa x z danej siatki reprezentacji, ceil(x) to najmniejsza liczba większa lub równa x. Przydatne, gdy potrzebny jest deterministyczny kierunek zaokrąglenia.
- Obcinanie (truncation) — odrzucenie części ułamkowej (zapisywane często jako zaokrąglenie w kierunku zera). Proste, ale generuje systematyczny błąd przy ujemnych liczbach.
- Zaokrąglanie do określonej liczby miejsc dziesiętnych — np. zaokrąglenie do 2 miejsc (123,456 → 123,46).
- Zaokrąglanie do określonej liczby cyfr znaczących — ważne przy prezentacji wyników pomiarów i naukowych (np. 0,00123456 do 3 cyfr znaczących → 0,00123).
- Różne tryby arytmetyki zmiennoprzecinkowej (np. IEEE 754): round to nearest (ties to even), round toward zero, round toward +∞, round toward −∞. Wybór trybu zależy od aplikacji i żądanego zachowania przy połówkach.
- Stochastyczne zaokrąglanie — losowy wybór jednego z sąsiednich wartości z prawdopodobieństwem zależnym od odległości; używane np. w niektórych algorytmach uczenia maszynowego, by uniknąć biasu deterministycznego.
Reguły rozstrzygania przy "połówkach"
- Zaokrąglanie pół w górę (najpopularniejsze w edukacji).
- Zaokrąglanie do parzystej (ang. round half to even) — minimalizuje systematyczne odchylenie.
- Zaokrąglanie "away from zero" — przy połowie przesuwa się w kierunku dalszym od zera.
- W praktyce ważne jest jawne określenie reguły, bo różne reguły dają różne wyniki w krytycznych przypadkach.
Błędy zaokrąglania i ich rodzaje
Bezpośredni błąd zaokrąglenia to bezwzględna różnica między wartością rzeczywistą a jej zaokrągloną reprezentacją. Można też mierzyć błąd względny (błąd podzielony przez wartość rzeczywistą), co bywa ważne, gdy porównujemy wielkości rzędu różnych potęg dziesięciu.
Kumulacja i propagacja błędów: w sekwencji obliczeń błędy zaokrąglania mogą się sumować lub (rzadziej) częściowo znosić. Szczególnie niebezpieczne jest tzw. kataklizmatyczne odejmowanie (catastrophic cancellation): gdy odejmujemy dwie bliskie wartości, znaczące cyfry się znoszą i względny błąd wynikowy gwałtownie rośnie.
Błędy w funkcjach transcendentalnych: dla funkcji takich jak exp, sin, log czy pierwiastek dokładne zaokrąglenie jest trudniejsze — liczba dodatkowych cyfr koniecznych do jednoznacznego ustalenia zaokrąglenia w górę lub w dół nie jest z góry znana. Ten problem znany jest jako dylemat twórcy tabeli — wymaga obliczenia z nadmiarem precyzji (tzw. guard digits) lub stosowania zaawansowanych algorytmów poprawnego zaokrąglenia.
Sposoby ograniczania błędów
- Użycie większej precyzji — obliczanie z dodatkową liczbą cyfr pomocniczych (guard digits) i dopiero na końcu zaokrąglanie do żądanej precyzji.
- Algorytmy numeryczne odporne na błędy — np. Kahan summation do redukcji błędu przy sumowaniu wielu zmiennoprzecinkowych liczb.
- Rearanżacja obliczeń — zmiana kolejności działań, by unikać odejmowania bliskich liczb lub liczyć bardziej stabilne formy wyrażeń algebraicznych.
- Interval arithmetic (arytmetyka przedziałowa) — zamiast jednej liczby przechowuje się przedział gwarantujący, że prawdziwa wartość się mieści; pozwala kontrolować narastanie niepewności.
- Dokumentowanie reguł zaokrąglania — w aplikacjach finansowych, prawnych i naukowych ważne jest jawne określenie trybu zaokrąglania, by zapewnić powtarzalność i zgodność wyników.
Przykłady praktyczne
- Zaokrąglając 2,675 do dwóch miejsc dziesiętnych, różne reguły dają różne wyniki: half up → 2,68; half to even → 2,68 (tu trafia się na parzystość 7?; jednak w pamięci binarnej 2,675 może nie być reprezentowane dokładnie i wynik może być 2,67). To pokazuje, że reprezentacja wewnętrzna (np. binarna) wpływa na efekty zaokrąglania.
- W finansach często stosuje się zaokrąglanie do dwóch miejsc dziesiętnych z regułą half up lub bankową (half to even) zależnie od regulacji. Przy przetwarzaniu dużej liczby transakcji wybór reguły ma znaczenie statystyczne.
Standardy i implementacje
Standard IEEE 754 dla arytmetyki zmiennoprzecinkowej definiuje kilka trybów zaokrąglania i rekomenduje domyślnie round to nearest, ties to even. Biblioteki matematyczne i języki programowania często udostępniają funkcje zaokrąglania o różnych regułach; warto zapoznać się z dokumentacją, by uniknąć nieoczekiwanych efektów.
Podsumowanie
Zaokrąglanie jest nieodłącznym elementem praktycznych obliczeń. Wybór metody i świadome zarządzanie błędami (poprzez większą precyzję, stabilne algorytmy i jasne reguły) są kluczowe, by ograniczyć wpływ zaokrągleń na wyniki. W przypadku funkcji transcendentalnych i krytycznych zastosowań matematycznych problemami zarządza się przez obliczenia z nadmiarem precyzji i specjalne algorytmy, co przeciwdziała efektom opisanym w "dylemacie twórcy tabeli".