Почему в Swift литерал с плавающей точкой по умолчанию имеет тип Double, а не Float?

Ответ

Тип Double (64-битный) выбран по умолчанию для литералов с плавающей точкой, потому что он обеспечивает более высокую точность и является стандартом для большинства системных API Apple.

Ключевые причины:

  • Точность: Double имеет около 15-17 десятичных знаков точности, Float — только 6-9. Это минимизирует накопление ошибок округления в вычислениях.
  • Производительность: На современных 64-битных процессорах операции с Double часто выполняются с той же скоростью, что и с Float.
  • Совместимость: Фреймворки (Core Graphics, Core Animation, Foundation) используют Double (например, CGFloat на 64-битных платформах — это Double).

Пример:

let implicitNumber = 3.14159 // Тип Double
let explicitFloat: Float = 3.14159 // Требует явного указания типа

Когда использовать Float? В основном для экономии памяти при работе с большими массивами данных (например, в графике или машинном обучении), где точность Double избыточна.

Ответ 18+ 🔞

Да ты посмотри, какая история-то, ёпта! Вот сидишь ты, пишешь себе 3.14159, и думаешь — ну, число и число. А Swift-то, хитрая жопа, уже втихаря тебе Double подсовывает, 64-битный, блядь!

А почему, спрашивается? Да потому что, чувак, точность — это святое! Double тебе даст знаков 15-17, а его младший брат Float — всего 6-9. Представь, ты копеечки считаешь, а у тебя после каждой операции по рублю с потолка сыпется — вот это и есть накопление ошибок, пиздец! С Double такого позора почти нет.

А ещё, блядь, производительность! На нынешних 64-битных камнях гонять Double — это как на велосипеде по асфальту, нихуя не медленнее, чем Float. Да и все системные штуки — Core Graphics там, Foundation — они на Double и заточены. CGFloat на современных айфонах — это вообще он и есть, под капотом. Совместимость — овердохуищная!

Вот, смотри, как оно выглядит:

let implicitNumber = 3.14159 // Тип Double — Swift сам такой умный, блядь
let explicitFloat: Float = 3.14159 // А тут уже надо в рот кричать, явно тип указывать

Так когда же тогда этот Float нужен, этот полупидор? А вот когда память жалко, блядь! Допустим, у тебя массив из миллиона чисел в какой-нибудь нейросетке или текстуре графической. Float в два раза меньше места жрёт — вот тут и пригодится, если высокая точность не критична. А так — да похуй, используй Double и не парься.