Назад к вопросам
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;
}