Jawne konwersje liczbowe
Celowa konwersja między typami liczbowymi w celu uniknięcia błędów.
Jawne konwersje liczbowe to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 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.
Swift wymaga jawnej konwersji
Swift nie konwertuje automatycznie typów liczbowych. Aby połączyć Int i Double, należy jawnie przekonwertować jeden z nich.
let count = 3
let price = 2.5
let total = Double(count) * price
print(total)Dlaczego nie ma konwersji niejawnej
Konwersje niejawne mogą po cichu prowadzić do utraty danych lub zmiany znaczenia. Swift wymaga jawnego określenia intencji, co zapobiega trudnym do wykrycia błędom.
let whole = 7
let fraction = 0.5
let result = Double(whole) + fraction
print(result)Konwersja Int do Double
Aby uzyskać postać zmiennoprzecinkową liczby całkowitej, należy umieścić ją w Double(...). Jest to konieczne przed wykonaniem dzielenia rzeczywistego.
let a = 7
let b = 2
let ratio = Double(a) / Double(b)
print(ratio)Konwersja Double do Int
Użycie Int(...) dla wartości typu Double obcina ją w kierunku zera, odrzucając część ułamkową (nie zaokrągla jej).
let value = 3.99
print(Int(value))
print(Int(-3.99))Zaokrąglanie przed konwersją
Jeśli potrzebne jest zaokrąglenie zamiast obcięcia, należy najpierw wywołać .rounded(), a następnie przekonwertować wartość do Int.
let value = 3.6
let rounded = Int(value.rounded())
print(rounded)Konwersja między typami całkowitoliczbowymi
Nawet konwersja między typami całkowitoliczbowymi wymaga jawnego wskazania, na przykład Int(small) lub Int8(big), ponieważ typy mają różne zakresy wartości.
let small: Int8 = 100
let big: Int = Int(small)
print(big + 1000)Konwersja powodująca przepełnienie
Konwersja wartości, która nie mieści się w typie docelowym, powoduje błąd w czasie działania programu. Jeśli nie ma Pan / Pani pewności, należy wcześniej sprawdzić zakres.
let n = 200
if n <= Int(Int8.max) {
print("fits")
} else {
print("would overflow Int8")
}Inicjalizatory liczbowe mogące zakończyć się niepowodzeniem
Niektóre konwersje korzystają z inicjalizatorów mogących zakończyć się niepowodzeniem, takich jak Int8(exactly:). Zwracają one opcję, a gdy wartość nie mieści się w typie dokładnie, zwracają nil.
let ok = Int8(exactly: 100)
let bad = Int8(exactly: 300)
print(ok as Any)
print(bad as Any)Konwersja String do liczby
Konwersja obiektu String do liczby również jest jawna i może zakończyć się niepowodzeniem. Zwraca opcję na wypadek, gdy tekst nie przedstawia prawidłowej liczby.
let text = "42"
if let n = Int(text) {
print("Parsed:", n)
}
print(Int("hello") as Any)Łączenie obliczeń na różnych typach liczbowych
Typowy schemat polega na przekonwertowaniu wszystkich operandów do wspólnego typu, wykonaniu obliczeń, a następnie, w razie potrzeby, przekonwertowaniu końcowego wyniku z powrotem.
let items = 5
let pricePerItem = 1.99
let total = Double(items) * pricePerItem
let rounded = (total * 100).rounded() / 100
print("Total:", rounded)Konwersja zwiększa bezpieczeństwo kodu
Jawne konwersje pokazują, gdzie zmienia się precyzja, dzięki czemu kod liczbowy łatwiej kontrolować i analizować.
let measured = 9.81
let asInt = Int(measured)
let backToDouble = Double(asInt)
print(measured, asInt, backToDouble)Szybkie sprawdzenie
Proszę przewidzieć wynik konwersji wartości typu Double do Int.
Podsumowanie: jawne konwersje liczbowe
Dowiedział się Pan / Dowiedziała się Pani, że Swift nigdy nie konwertuje niejawnie typów liczbowych, że Int(...) obcina wartości typu Double, a Double(...) rozszerza wartości typu Int, oraz że inicjalizatory mogące zakończyć się niepowodzeniem, takie jak Int8(exactly:) i Int("text"), zwracają opcje, gdy konwersja nie może się powieść.
let pieces = 7
let share = Double(pieces) / 2.0
print("Share:", share)
print("Truncated:", Int(share))Często zadawane pytania
Czy lekcja „Jawne konwersje liczbowe” jest bezpłatna?
Tak — pełny tekst „Jawne konwersje liczbowe” 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 „Jawne konwersje liczbowe”?
Celowa konwersja między typami liczbowymi w celu uniknięcia błędów. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Jawne konwersje liczbowe”?
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
- Typy całkowite i ich zakresy
- Liczby zmiennoprzecinkowe: Double a Float
- Jawne konwersje liczbowe
- Literały liczbowe i podkreślenia