W niektórych zadaniach wymagane jest zaokrąglanie liczb rzeczywistych. Ogólnie polega ono na tym by przekształcić liczbę rzeczywistą w całkowitą (czasem to ta sama wartość np. 2.0). Najczęściej wybieranymi zaokrągleniami są:
- zaokrąglenie w stronę zera,
- zaokrąglenie do najbliższej wartości.
Tę metodę zaokrąglania można zrealizować za pomocą rzutowania np.
a = (int) a;
Druga ze wspomnianych metod służy do wyznaczania liczby całkowitej najbliższej przetwarzanej wartości rzeczywistej np. dla 3,14 otrzymamy 3, a dla 3,75 dostaniemy 4. Dla liczb ujemnych analogicznie dla -3,14 otrzymamy -3 a dla -3,75 dostaniemy -4. W procesie implementacji tej metody pomocne znów okaże się rzutowanie. Tym razem nie obędzie się bez dodatkowych działań.
Musimy sprawdzić czy dana wartość jest dodatnia czy ujemna. Jeżeli stwierdzimy, że mamy do czynienia z liczbą dodatnią to dodajemy do niej 0,5. Jeżeli wartość przetwarzanej liczby jest bliższa wyższej wartości całkowitej to po dodaniu 0,5 przekroczy tę liczbę np. 3,75 + 0,5 = 4,25. Otrzymaną wartość rzutujemy na typ całkowity. Pozbywamy się w ten sposób części ułamkowej. Podobnie postępujemy dla wartości ujemnych. Dla liczb ujemnych należy odjąć wartość 0,5 np. -3,75 - 0,5 = -4,25 i następnie rzutować otrzymaną wartość na typ całkowity.
Przykłady realizacji zaokrąglenia do najbliższej wartości:
lub krócejif(a > 0)a = int(a + 0.5);elsea = int(a - 0.5);
a = (int)(a + (a>0?0.5:-0.5));
Innymi typami zaokrągleń są (http://pl.wikipedia.org/wiki/Zaokr%C4%85glanie):
- zaokrąglanie w dół - otrzymujemy największą liczbę całkowitą, której wartość nie przekracza przetwarzana liczba rzeczywista.
- zaokrąglanie w górę - otrzymujemy najmniejszą liczbę całkowitą, której wartość jest nie mniejsza od przetwarzanej liczby rzeczywistej..
- zaokrąglanie w kierunku od zera - otrzymujemy liczbę całkowitą najbliższą zeru dla której przetwarzana wartość rzeczywista znajduje się pomiędzy nią i zerem.
Zadanie: LVL 1 - Zadanie 18