KWALIFIKACJA INF2 + INF3 - CZERWIEC 2013

PYTANIE NR 31.
Wskaż typ zmiennej, która będzie zawierać najbardziej dokładny wynik dzielenia liczb całkowitych?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Typ float jest typem zmiennoprzecinkowym, więc może przechowywać wynik dzielenia z częścią ułamkową. Typy short, int i long są całkowite, więc przy dzieleniu liczb całkowitych nie zachowują ułamka (wynik jest ucięty do liczby całkowitej).

Pełne wyjaśnienie:

Wynik dzielenia dwóch liczb całkowitych często nie jest liczbą całkowitą (np. 5/2 = 2,5). Aby taki wynik dało się zapisać bez utraty części ułamkowej, potrzebny jest typ zmiennoprzecinkowy.

Odpowiedź "float" jest poprawna, ponieważ float przechowuje liczby z częścią ułamkową (w przybliżeniu, z ograniczoną precyzją), więc pozwala zapisać rezultat dzielenia "dokładniej" niż typ całkowity, który nie ma miejsca na ułamek.

Dlaczego pozostałe odpowiedzi nie pasują:

  • "short" – typ całkowity; nie przechowuje części ułamkowej, więc wynik dzielenia zapisany w takim typie nie zachowa ułamka.
  • "int" – również całkowity; nawet jeśli ma większy zakres niż short, nadal nie zapisze wartości po przecinku.
  • "long" – także całkowity; większy zakres nie oznacza możliwości zapisu ułamka. To częsty błąd: mylenie zakresu z precyzją zapisu wyniku dzielenia niecałkowitego.

W praktyce programistycznej, gdy zależy Ci na wyniku dzielenia z częścią ułamkową, używa się typu zmiennoprzecinkowego lub wykonuje rzutowanie przynajmniej jednego argumentu dzielenia na typ zmiennoprzecinkowy. W wielu językach spotkasz też typ double, zwykle dokładniejszy niż float, ale w tym pytaniu nie występuje wśród opcji.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Float to typ liczbowy przechowujący wartości z częścią ułamkową (po przecinku), ale z ograniczoną precyzją. Stosuje się go, gdy wynik obliczeń nie mieści się w liczbach całkowitych lub ma mieć część ułamkową, np. przy dzieleniu.
W wielu językach, gdy oba argumenty są całkowite, wykonywane jest dzielenie całkowitoliczbowe, które zwraca wynik bez ułamka (trunkowanie/obcięcie). Aby zachować ułamek, trzeba użyć typu zmiennoprzecinkowego lub rzutować argument.
Short, int i long to typy całkowite (integralne). Różnią się zwykle zakresem wartości, ale żaden z nich nie przechowuje części ułamkowej. Dlatego nie nadają się do zapisu wyniku dzielenia typu 5/2 = 2,5.
Najczęściej zapewnia się, aby przynajmniej jedna liczba w dzieleniu była zmiennoprzecinkowa, np. przez użycie float albo rzutowanie. Wtedy operacja zwróci wynik z częścią ułamkową zamiast obciętej wartości całkowitej.
Nie zawsze. Float zapisuje liczby w przybliżeniu, więc część wyników może mieć błąd zaokrąglenia. Mimo to, w porównaniu z typami całkowitymi, pozwala zachować część ułamkową, co zwykle oznacza "dokładniejszy" rezultat dzielenia całkowitych.
Typy całkowite przechowują wyłącznie liczby bez ułamka, więc nie zapiszą wartości po przecinku. Float przechowuje liczby z ułamkiem, ale może wprowadzać przybliżenia. W zadaniach o dzieleniu kluczowa jest możliwość zapisu części ułamkowej.
Gdy obliczenia dotyczą pieniędzy (np. faktury, rozliczenia), często unika się typów zmiennoprzecinkowych przez ryzyko błędów zaokrągleń. Zamiast tego stosuje się typy stałoprzecinkowe, liczby całkowite w groszach albo specjalne typy dziesiętne (zależnie od języka).
Typowe pomyłki to: wybór long "bo większy", ignorowanie, że to nadal typ całkowity, oraz brak rzutowania przed dzieleniem. Często też miesza się pojęcia: zakres typu (ile maksymalnie) z możliwością zapisu ułamka (po przecinku).
Nie. Nazwy i modele typów zależą od języka. W części języków (np. C, Java, C#) spotkasz float i typy całkowite jak int/long. W innych (często webowych) typy mogą wyglądać inaczej, dlatego na egzaminie warto zwracać uwagę na kontekst.
Ucz się różnic między typami: całkowite vs zmiennoprzecinkowe, oraz jak wpływają na wynik działań (dzielenie, rzutowanie, zaokrąglenia). Przećwicz krótkie przykłady w wybranym języku i zwracaj uwagę, kiedy wynik jest obcinany, a kiedy zachowuje ułamek.
info

Statystycznie 66% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Typ float jest typem zmiennoprzecinkowym, więc może przechowywać wynik dzielenia z częścią ułamkową."

Źródła:

  • Oracle Java Documentation: Primitive Data Types (float, int, long, short), https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (dostęp: 13.03.2026)
  • Microsoft Learn: C# built-in numeric types (integral types vs floating-point types), https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/numeric-types (dostęp: 13.03.2026)
  • cppreference.com: Floating-point types (float) i różnice względem typów całkowitych, https://en.cppreference.com/w/c/language/arithmetic_types (dostęp: 13.03.2026)

Materiały:

  • Dokumentacja typów liczbowych w wybranym języku (Java/C#/C/C++)
  • Materiały o reprezentacji zmiennoprzecinkowej i ograniczeniach precyzji float vs double
  • Ćwiczenia z rzutowania typów i dzielenia w kodzie (zadania praktyczne)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego