си после расчета функции на вывод я получаю значение -nan
при программировани на си столкнулся с проблеммой, есть простая программа, при определенных значениях b в переменную l присваивается значение -nan, как можно в дальнейшем проверить что в l находится значение -nan например через if
#include <stdio.h>
#include <math.h>
int main()
{
double b,l;
b = M_PI;
l = sqrt(sqrt(pow(1,4)+4*pow(b,2)*pow(1,2))-pow(b,2)-pow(1,2));
printf("%.7f", l);
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Разберем по кускам...
l = sqrt(sqrt(pow(1,4)+4*pow(b,2)*pow(1,2))-pow(b,2)-pow(1,2));
Имеем:
pow(1,4) == 1
pow(1,2) == 1
Итого sqrt(1+4*pow(b,2)) примерно равно 6,362265....
Затем минус пи в квадрате, минус 1... Итог — -4.5...
Еще раз: отрицательное значение.
И чему должен быть равен квадратный корень из него?
Может, вы что-то не то считаете? Очень смущают ваши pow(1,2)...
Ну, а проверить на то, не NaN ли получилось - просто: isnan(). Типа,
if (isnan(l))
puts("Error");
else
printf("%.7f", l);