Ответ
Float и Double — это типы с плавающей запятой, отличающиеся размером в памяти, точностью и диапазоном представляемых значений.
Float(одинарная точность): 32 бита (~6-9 значащих десятичных цифр).Double(двойная точность): 64 бита (~15-17 значащих десятичных цифр).
Сравнение характеристик:
// Размер в памяти
MemoryLayout<Float>.size // 4 байта
MemoryLayout<Double>.size // 8 байта
// Диапазон значений
Float.greatestFiniteMagnitude // ~3.4e38
Double.greatestFiniteMagnitude // ~1.8e308
// Точность
let piFloat: Float = 3.141592653589793
let piDouble: Double = 3.141592653589793
print(piFloat) // 3.1415927 (округление на 8-й цифре)
print(piDouble) // 3.141592653589793
Когда что использовать:
- Используйте
Doubleпо умолчанию в Swift. Это тип, используемый во всех стандартных библиотечных функциях (например,sqrt(_:)), он обеспечивает более высокую точность и уменьшает накопление ошибок округления. - Используйте
Floatкогда критически важна:- Экономия памяти (большие массивы данных, например, в GPU-вычислениях, компьютерной графике).
- Совместимость с внешними API или форматами данных, требующими 32-битных значений.
Важно: Из-за ограниченной точности сравнение чисел с плавающей запятой на равенство (==) ненадежно. Всегда используйте сравнение с допуском:
let a: Double = 0.1 + 0.2
let b: Double = 0.3
let areEqual = abs(a - b) < 0.000001 // true