Целочисленные типы и типы с плавающей точкой
Выбирайте подходящий числовой тип, понимая компромиссы между размером, диапазоном и точностью.
«Целочисленные типы и типы с плавающей точкой» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Два мира чисел
В C++ есть два семейства числовых типов: целочисленные (без дробей, точные) и с плавающей точкой (приближённые, с дробной частью). Выбирайте подходящее семейство для конкретной задачи.
Целочисленные типы
Встроенные целочисленные типы и их типичные размеры в 64-разрядных системах:
char— 1 байтshort— 2 байтаint— 4 байтаlong— 4 или 8 байтlong long— 8 байт
Знаковые и беззнаковые типы
Добавьте unsigned, чтобы исключить отрицательный диапазон. Беззнаковая арифметика зацикливается по модулю 2^N — иногда это полезно, но часто приводит к трудноуловимым ошибкам.
unsigned int u = 0;
u -= 1; // wraps around to 4,294,967,295Целые числа фиксированной ширины
Используйте типы из <cstdint>, когда нужны точные размеры — например, для протоколов, файловых форматов или переносимости между платформами.
#include <cstdint>
int8_t tiny = 100;
int32_t word = 100000;
int64_t big = 1LL << 40;
uint64_t huge = 18446744073709551615ULL;Типы с плавающей точкой
Три типа с плавающей точкой, упорядоченные по возрастанию точности:
float— 32-разрядный, около 7 десятичных цифрdouble— 64-разрядный, около 15 десятичных цифрlong double— обычно 80 или 128 разрядов
Формат IEEE 754
Числа с плавающей точкой соответствуют стандарту IEEE 754: знак, порядок, мантисса. Они могут представлять очень большие и очень малые значения, но не всегда точно.
Проблемы чисел с плавающей точкой
Большинство десятичных чисел нельзя точно представить в двоичной системе. 0.1 + 0.2 не равно точно 0.3.
double sum = 0.1 + 0.2;
std::cout << (sum == 0.3); // false on most systems
std::cout << sum; // 0.3 but printed approximatelyБезопасное сравнение чисел с плавающей точкой
Никогда не сравнивайте числа с плавающей точкой с помощью ==. Сравнивайте их с учётом небольшой допустимой погрешности (эпсилона).
bool approxEqual(double a, double b, double eps = 1e-9) {
return std::abs(a - b) < eps;
}Специальные значения с плавающей точкой
У чисел с плавающей точкой есть три специальных значения: NaN (не число), +inf и -inf. Для проверки используйте предикаты из <cmath>.
#include <cmath>
double x = std::sqrt(-1.0);
if (std::isnan(x)) std::cout << "Not a number";
if (std::isinf(x)) std::cout << "Infinity";Когда что использовать
Выбирайте тип в зависимости от предметной области:
- Счётчики и индексы →
intилиsize_t - Научные или графические вычисления →
double - Деньги → никогда не используйте
double! Используйте целые числа в наименьших единицах (центы) или библиотеку для десятичных чисел
Размеры типов зависят от платформы
Стандарт гарантирует только минимальные размеры. int может иметь ширину 16, 32 или 64 бита. Для переносимости используйте типы фиксированной ширины из <cstdint> в структурах данных.
Быстрая проверка
Какой тип следует использовать для точного представления денежных значений?
Итоги
Целые числа точны, а числа с плавающей точкой приблизительны. Выбирайте int или целые числа фиксированной ширины для счётчиков, double — для научных вычислений и никогда не используйте числа с плавающей точкой для денег. Сравнивайте их с учётом допустимой погрешности, но никогда не используйте ==.
Часто задаваемые вопросы
Урок «Целочисленные типы и типы с плавающей точкой» бесплатный?
Да — полный текст урока «Целочисленные типы и типы с плавающей точкой» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Целочисленные типы и типы с плавающей точкой»?
Выбирайте подходящий числовой тип, понимая компромиссы между размером, диапазоном и точностью. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Целочисленные типы и типы с плавающей точкой»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Целочисленные типы и типы с плавающей точкой
- Заголовок cmath: pow, sqrt, abs, round
- Случайные числа с заголовком random
- Числовые ограничения и переполнение