Явные преобразования чисел
Осознанно преобразуйте числовые типы, чтобы избежать ошибок.
«Явные преобразования чисел» — бесплатный урок Swift Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Swift требует явного преобразования
Swift не преобразует числовые типы автоматически. Чтобы объединить Int и Double, необходимо явно преобразовать один из них.
let count = 3
let price = 2.5
let total = Double(count) * price
print(total)Почему нет неявного преобразования
Неявные преобразования могут незаметно привести к потере данных или изменению смысла. Swift заставляет явно указывать намерение, предотвращая трудноуловимые ошибки.
let whole = 7
let fraction = 0.5
let result = Double(whole) + fraction
print(result)Преобразование Int в Double
Оберните целое число в Double(...), чтобы получить его представление с плавающей точкой. Это необходимо перед выполнением деления с вещественным результатом.
let a = 7
let b = 2
let ratio = Double(a) / Double(b)
print(ratio)Преобразование Double в Int
Применение Int(...) к Double отбрасывает дробную часть, округляя к нулю (это не округление до ближайшего целого).
let value = 3.99
print(Int(value))
print(Int(-3.99))Округление перед преобразованием
Если вместо усечения требуется округление, сначала вызовите .rounded(), а затем преобразуйте значение в Int.
let value = 3.6
let rounded = Int(value.rounded())
print(rounded)Преобразование между целочисленными типами
Даже для преобразования одного целочисленного типа в другой требуется явное указание, например Int(small) или Int8(big), поскольку диапазоны значений различаются.
let small: Int8 = 100
let big: Int = Int(small)
print(big + 1000)Преобразование с переполнением
Преобразование значения, которое не помещается в целевой тип, приводит к аварийному завершению во время выполнения. Если вы не уверены, сначала проверьте диапазон.
let n = 200
if n <= Int(Int8.max) {
print("fits")
} else {
print("would overflow Int8")
}Инициализаторы числовых типов, допускающие сбой
В некоторых преобразованиях используются инициализаторы, допускающие сбой, например Int8(exactly:). Они возвращают опциональное значение и дают nil, если значение нельзя представить точно.
let ok = Int8(exactly: 100)
let bad = Int8(exactly: 300)
print(ok as Any)
print(bad as Any)Преобразование строки в число
Преобразование String в число также выполняется явно и может завершиться неудачей: в случае некорректного числового значения текста возвращается опциональное значение.
let text = "42"
if let n = Int(text) {
print("Parsed:", n)
}
print(Int("hello") as Any)Сочетание числовых операций с разными типами
Типичный подход таков: преобразуйте все операнды к общему типу, выполните вычисления, а затем при необходимости преобразуйте итоговый результат обратно.
let items = 5
let pricePerItem = 1.99
let total = Double(items) * pricePerItem
let rounded = (total * 100).rounded() / 100
print("Total:", rounded)Преобразования делают код безопаснее
Явные преобразования показывают, где изменяется точность, поэтому числовой код проще проверять и понимать.
let measured = 9.81
let asInt = Int(measured)
let backToDouble = Double(asInt)
print(measured, asInt, backToDouble)Быстрая проверка
Предскажите результат преобразования Double в Int.
Итоги: явные числовые преобразования
Вы узнали, что Swift никогда не преобразует числовые типы неявно, что Int(...) усекает значения Double, а Double(...) расширяет значения Int, и что инициализаторы, допускающие сбой, например Int8(exactly:) и Int("text"), возвращают опциональные значения, если преобразование невозможно.
let pieces = 7
let share = Double(pieces) / 2.0
print("Share:", share)
print("Truncated:", Int(share))Часто задаваемые вопросы
Урок «Явные преобразования чисел» бесплатный?
Да — полный текст урока «Явные преобразования чисел» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Явные преобразования чисел»?
Осознанно преобразуйте числовые типы, чтобы избежать ошибок. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Явные преобразования чисел»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Целочисленные типы и их диапазоны
- Числа с плавающей точкой: Double и Float
- Явные преобразования чисел
- Числовые литералы и символы подчёркивания