Сама запись:
#define FLT_EPSILON 1.19209290E-07F
Что такое
#define
и имя я знаю, но что значит 1.19209290E-07F нет. Объясните, пожалуйста.
#define FLT_EPSILON 1.19209290E-07F
это наследие си. На данный момент лучше писать так
const float FLT_EPSILON = 1.19209290E-07F;
В большинстве случаев эти записи эквивалентны по функционалу.
#define - это директива препроцессора, которая просто обозначает замену одного куска текста на другой. Препроцессор работает ещё до компилятора (хотя сейчас это происходит почти одним процессов) и иногда может давать чудесные результаты. К примеру, мой любимый
#define true false
и все вхождения true как слова будут заменены на false (bool a = true; будет заменено на bool a = false;, но true1 не будет.)
У define есть одна особенность - они ничего не знают о областях видимости и работают от места объявления и до конца файла. Именно поэтому, очень интересно наблюдать, как windows.h подменяет max/min и вызывает ошибки.
Хотя define и страшные, и ошибок много дают, но иногда они позволяют элегантно и красиво решить проблемы.
Буковка F в конце - это просто литерал. Такой себе способ уточнить тип переменной (ведь по умолчанию 1.0 - это double). В новом с++ появилась возможность создавать свои собственные литералы.
1.19209290E-07 - это число с плавающей точкой (1.19209290 * 10^-7), суффикс F в конце указывает, что число типа float
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники