How to determine if a float is a not-a-number (NaN) value in C

1 Answer

0 votes
#include <stdio.h>
#include <math.h>
#include <float.h>

// Return 1 = nan, 0 = not nan

int main(void)
{
    printf("isnan(NAN)       = %d\n", isnan(NAN));
    printf("isnan(INFINITY)  = %d\n", isnan(INFINITY));
    printf("isnan(0.0)       = %d\n", isnan(0.0));
    printf("isnan(3.14)      = %d\n", isnan(3.14));
    printf("isnan(DBL_MIN)   = %d\n", isnan(DBL_MIN));
    printf("isnan(0.0)       = %d\n", isnan(0.0));
    printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY));
}



/*
run:

isnan(NAN)       = 1
isnan(INFINITY)  = 0
isnan(0.0)       = 0
isnan(3.14)      = 0
isnan(DBL_MIN)   = 0
isnan(0.0)       = 0
isnan(Inf - Inf) = 1

*/

 



answered Feb 11, 2023 by avibootz
...