Замена NAN на нужный символ
Есть мат.функция, допустим у=1/х на ввод подаем х на вывод у если подать х=0 консоль выдаст nan! как заменить nan на нужный мне символ?
#include <stdio.h>
#include <math.h>
int main(){
double x,y;
scanf ("%lf",&x);
y=1/x;
//вот тут затык
if ( y == NAN ){
//-----/\------
//------|------
//------|------
printf ("%lf",&x);
}
else {
printf ("%lf",&x);
}
}
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
Самый простой способ проверки на NaN - сравнить на (не)равенство с собой: tio.run
#include <iostream>
using namespace std;
int main()
{
double x, y;
cin >> x >> y;
double z = x / y;
if (z != z)
cout << "It was NaN: " << z << endl;
else
cout << z << endl;
return 0;
}
0 0
It was NaN: -nan
Тем не менее, насколько я помню, оптимизации компилятора по умолчанию не гарантируют корректную работу с NaN - требуется добавить какой-то флаг.