Назад к вопросам
Junior
106
questionbank

Как можно проверить, что не возникло исключение при работе с типом double?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Поскольку double является примитивным типом, операции с ним не генерируют исключений C++. Однако, могут возникать особые значения, такие как:

  • NaN (Not a Number): результат некорректной математической операции (например, деление нуля на ноль).
  • Infinity: результат деления ненулевого числа на ноль.

Для их проверки используются функции из <cmath> (или <math.h> в C):

  • isnan(x): возвращает true, если x является NaN.
  • isinf(x): возвращает true, если x является бесконечностью.
  • isfinite(x): возвращает true, если x не является NaN и не является бесконечностью.

Пример использования:

#include <iostream>
#include <cmath>

int main() {
    double a = 0.0;
    double b = 0.0;
    double c = a / b; // Результат Nan

    double d = 1.0;
    double e = 0.0;
    double f = d / e; // Результат Infinity

    double g = 5.0;

    if (std::isnan(c)) {
        std::cout << "Variable c is NaN" << std::endl;
    }

    if (std::isinf(f)) {
        std::cout << "Variable f is Infinity" << std::endl;
    }

    if (std::isfinite(g)) {
        std::cout << "Variable g is finite" << std::endl;
    }

    return 0;
}