Swift Academy · Lekcja

Liczby zmiennoprzecinkowe: Double a Float

Wybieranie między Double i Float oraz obsługa precyzji.

Lekcja 2 z 413 kroki

Liczby zmiennoprzecinkowe: Double a Float to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Typy zmiennoprzecinkowe

Swift ma dwa główne typy zmiennoprzecinkowe: Double (64-bitowy) i Float (32-bitowy). Reprezentują one liczby zawierające część ułamkową.

let d: Double = 3.14159
let f: Float = 3.14159
print(d, f)

Double jest typem domyślnym

Gdy zapisuje się literał dziesiętny bez adnotacji typu, Swift wnioskuje typ Double. Typ Double zapewnia większą precyzję niż Float.

let value = 2.5
print(type(of: value))

Różnica w precyzji

Double przechowuje około 15 znaczących cyfr dziesiętnych, a Float tylko około 6 lub 7. Ten sam literał może zostać wyświetlony w różny sposób.

let d: Double = 0.1234567890123456
let f: Float = 0.1234567890123456
print(d)
print(f)

Stała pi

Oba typy udostępniają właściwość .pi. Double.pi jest dokładniejsza niż Float.pi.

print(Double.pi)
print(Float.pi)

Arytmetyka zmiennoprzecinkowa

Na liczbach zmiennoprzecinkowych można wykonywać dodawanie, odejmowanie, mnożenie i dzielenie. Dzielenie zachowuje wynik ułamkowy.

let radius = 2.0
let area = Double.pi * radius * radius
print("Area:", area)

Metody zaokrąglania

Wartości zmiennoprzecinkowe udostępniają metodę .rounded() oraz jej warianty, takie jak .rounded(.down) i .rounded(.up).

let x = 2.7
print(x.rounded())
print(x.rounded(.down))
print(x.rounded(.up))

Zaokrąglanie w dół, w górę i obcinanie

Reguły zaokrąglania pozwalają zaokrąglać w dół w kierunku ujemnej nieskończoności, w górę w kierunku dodatniej nieskończoności albo obcinać część ułamkową w kierunku zera.

let n = -2.3
print(n.rounded(.down))
print(n.rounded(.up))
print(n.rounded(.towardZero))

Niedokładność arytmetyki zmiennoprzecinkowej

Z powodu reprezentacji binarnej niektórych liczb dziesiętnych nie można przechowywać dokładnie. 0.1 + 0.2 to słynny przykład wyrażenia, którego wynik nie jest dokładnie równy 0.3.

let sum = 0.1 + 0.2
print(sum)
print(sum == 0.3)

Bezpieczne porównywanie liczb zmiennoprzecinkowych

Zamiast sprawdzać dokładną równość, należy porównywać liczby zmiennoprzecinkowe z uwzględnieniem niewielkiej tolerancji (epsilon).

let sum = 0.1 + 0.2
let close = abs(sum - 0.3) < 0.0001
print("Close enough:", close)

Specjalne wartości typu Float

Typy zmiennoprzecinkowe mogą reprezentować infinity oraz nan (not a number, czyli „nie jest liczbą”). Należy używać funkcji .isInfinite i .isNaN do ich sprawdzania.

let inf = Double.infinity
let notNum = Double.nan
print(inf.isInfinite)
print(notNum.isNaN)

Wybór typu Double lub Float

W ogólnych obliczeniach matematycznych należy preferować Double ze względu na dokładność. Float należy stosować tylko wtedy, gdy wymagają tego oszczędność pamięci lub określony sprzęt (na przykład grafika) i potrzebna jest wartość 32-bitowa.

let preciseAvg: Double = (10.0 + 3.0) / 4.0
print(preciseAvg)

Szybkie sprawdzenie

Proszę przypomnieć sobie, jaki typ Swift wywnioskuje dla literałów dziesiętnych.

Podsumowanie: Double a Float

Dowiedział się Pan / Dowiedziała się Pani, że Double (64-bitowy, domyślny) jest dokładniejszy niż Float (32-bitowy), oba typy udostępniają .pi i metody zaokrąglania, a obliczenia zmiennoprzecinkowe są niedokładne, dlatego liczby należy porównywać z tolerancją zamiast używać ==.

let a = 0.1 + 0.2
print("Raw:", a)
print("Rounded:", a.rounded())
print("Within tolerance of 0.3:", abs(a - 0.3) < 1e-9)
Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Liczby zmiennoprzecinkowe: Double a Float” jest bezpłatna?

Tak — pełny tekst „Liczby zmiennoprzecinkowe: Double a Float” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Liczby zmiennoprzecinkowe: Double a Float”?

Wybieranie między Double i Float oraz obsługa precyzji. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Liczby zmiennoprzecinkowe: Double a Float”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Typy całkowite i ich zakresy
  2. Liczby zmiennoprzecinkowe: Double a Float
  3. Jawne konwersje liczbowe
  4. Literały liczbowe i podkreślenia
← Powrót do Swift Academy