Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Algorytmy i podstawy informatyki

Które typy danych w języku C++ reprezentują liczby rzeczywiste?

A. double i short
B. float i double
C. double i bool
D. float i long

Pytanie z egzaminu CKE, czerwiec 2023 (arkusz EE.09-SG-23.06).

W języku C++ typy float i double należą do typów zmiennoprzecinkowych, czyli takich, które służą do przechowywania liczb rzeczywistych w przybliżeniu. W praktyce oznacza to wartości z częścią ułamkową, na przykład 3.14, -0.5 albo 125.75. Typ float zwykle zajmuje mniej pamięci i ma mniejszą precyzję, natomiast double jest dokładniejszy i bardzo często używany jako domyślny wybór do obliczeń matematycznych. Moim zdaniem w normalnym kodzie szkolnym i zawodowym double jest bezpieczniejszy, jeśli nie masz konkretnego powodu, żeby oszczędzać pamięć. Trzeba też pamiętać, że liczby zmiennoprzecinkowe nie zapisują każdej wartości idealnie, więc porównywanie ich operatorem == bywa ryzykowne. Dobra praktyka to porównywanie z pewną tolerancją, np. sprawdzanie, czy różnica jest bardzo mała. W C++ istnieje także long double, ale w tym pytaniu poprawna para z podanych możliwości to właśnie float i double.
W C++ liczby rzeczywiste, czyli takie z częścią ułamkową, reprezentuje się za pomocą typów zmiennoprzecinkowych. Do tej grupy należą przede wszystkim float, double oraz także long double, chociaż ten ostatni nie występuje w poprawnej parze odpowiedzi. Typy takie jak bool, short i long pełnią zupełnie inne role, więc mieszanie ich z double albo float prowadzi do złego wniosku. Bool nie jest typem liczbowym do obliczeń rzeczywistych, tylko typem logicznym. Przechowuje wartości prawda albo fałsz, w C++ zapisywane jako true i false. Da się go czasem automatycznie zamienić na 0 lub 1, ale to nie znaczy, że jest przeznaczony do reprezentowania liczb z przecinkiem. Short oraz long to typy całkowite, czyli przechowują liczby bez części ułamkowej, na przykład -10, 0, 45 albo 100000, zależnie od zakresu danego typu. Typowy błąd polega na tym, że ktoś widzi nazwę long i kojarzy ją z większą dokładnością, a to trochę pułapka. Samo long oznacza liczbę całkowitą o większym zakresie niż int na wielu platformach, a nie liczbę rzeczywistą. Dopiero long double jest typem zmiennoprzecinkowym. Z mojego doświadczenia warto zapamiętać prostą zasadę: jeśli potrzebujesz ułamków w C++, patrzysz na float, double lub long double, a nie na bool, short, int czy long.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.