Перейти к содержанию

Математика в C++: библиотека cmath и ловушки чисел

Программирование C++ Сложность 1/5

Начало урока

Математика в C++: библиотека cmath и ловушки чисел

Получай правильный ответ, а не тихо неверный

Главная идея: C++ любит математику, но у чисел строгие правила. Библиотека <cmath> даёт готовые инструменты, такие как sqrt и pow. В то же время несколько ловушек — например, деление целых чисел и крошечные ошибки округления — могут заставить программу тихо напечатать неверный ответ. Этот урок показывает и инструменты, и ловушки, чтобы твоя математика всегда была правильной.
К концу урока ты сможешь:
  • использовать функции <cmath>, такие как sqrt, pow, round, abs, ceil и floor,
  • объяснить, почему 7 / 2 даёт 3, а не 3.5,
  • правильно применять оператор остатка %,
  • замечать ошибку округления чисел с плавающей точкой и переполнение целых,
  • выбирать правильный числовой тип, чтобы ответы оставались верными.

1. Набор инструментов <cmath>

Ты уже знаешь операторы +, -, * и / из урока Операторы и выражения. Но как найти квадратный корень или возвести число в степень? C++ хранит такие действия в наборе инструментов под названием <cmath>. Ты открываешь этот набор, добавив одну строку в начало файла:

#include <cmath>

Как только он подключён, ты можешь вызывать эти удобные функции. Представь каждую как маленькую машину: ты подаёшь ей число, а она возвращает другое.

ФункцияЧто делаетПримерРезультат
sqrt(x)квадратный кореньsqrt(9.0)3.0
pow(x, y)x в степени ypow(2.0, 3.0)8.0
abs(x)модуль (убирает знак минус)abs(-4)4
round(x)округляет до ближайшего целогоround(2.7)3.0
ceil(x)округляет ВВЕРХ до целогоceil(2.1)3.0
floor(x)округляет ВНИЗ до целогоfloor(2.9)2.0

Вот они работают вместе в настоящей программе:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    cout << sqrt(16.0) << endl;   // 4
    cout << pow(3.0, 2.0) << endl; // 9
    cout << abs(-7) << endl;       // 7
    cout << round(4.6) << endl;    // 5
    return 0;
}
Большинство функций <cmath> работают с числами double (десятичными) и возвращают double. Поэтому мы написали 16.0, а не просто 16.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя