Thursday, March 28, 2013

How to check if a value is NaN in C++


I didn't know until now that if (a != a) returns true only when a is NaN.


#include <iostream>
#include <cmath>

using namespace std;

int main() {
    float a = sqrt(-1); // nan
    if (a != a) {
        cout << "It's NaN!" << endl;
        cout << a << endl; // prints 'nan'
    }
    else {
        cout << "It's OK!" << endl;
    }
    return 0;
}