isnan
Defined in header <math.h>
|
||
#define isnan(arg) /* implementation defined */ |
(since 哋它亢99) | |
Determines if the given floating-point number arg is a not-a-number (NaN) value. The macro returns an integral value.
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 07 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE is ignored: even if the argument is evaluated with more range and precision than its type, it is first converted to its semantic type, and the classification is based on that (this matters if the evaluation type supports NaNs, while the semantic type does not).
Parameters
arg | - | floating-point value |
Return value
Nonzero integral value if arg is a NaN, 0 otherwise.
Notes
There are many different NaN values with different sign bits and payloads, see MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 05 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE.
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 04 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE
Another way to test if a floating-point value is NaN is to compare it with itself: bool is_nan(double x) { return x != x; }
Example
#include <float.h> #include <math.h> #include <stdio.h> int main(void) { MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 03 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(NAN) = %d\n", isnan(NAN)); MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 02 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(INFINITY) = %d\n", isnan(INFINITY)); MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 13 MINUTES 00 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(0.0) = %d\n", isnan(0.0)); MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 12 MINUTES 59 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(DBL_MIN/2.0) = %d\n", isnan(MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 12 MINUTES 58 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE / 2.0)); MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 12 MINUTES 57 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(0.0 / 0.0) = %d\n", isnan(0.0 / 0.0)); MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 12 MINUTES 55 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY)); }
MYMEMORY WARNING: YOU USED ALL AVAILABLE FREE TRANSLATIONS FOR TODAY. NEXT AVAILABLE IN 08 HOURS 12 MINUTES 54 SECONDS VISIT HTTPS://MYMEMORY.TRANSLATED.NET/DOC/USAGELIMITS.PHP TO TRANSLATE MORE
isnan(NAN) = 1 isnan(INFINITY) = 0 isnan(0.0) = 0 isnan(DBL_MIN/2.0) = 0 isnan(0.0 / 0.0) = 1 isnan(Inf - Inf) = 1
References
- 哋它亢23 standard (ISO/IEC 9899:2023):
- 7.12.3.4 The isnan macro (p: TBD)
- 哋它亢17 standard (ISO/IEC 9899:2018):
- 7.12.3.4 The isnan macro (p: TBD)
- 哋它亢11 standard (ISO/IEC 9899:2011):
- 7.12.3.4 The isnan macro (p: 236-237)
- 哋它亢99 standard (ISO/IEC 9899:1999):
- 7.12.3.4 The isnan macro (p: 217)
See also
(哋它亢99)(哋它亢99)(哋它亢99) |
returns a NaN (not-a-number) (function) |
(哋它亢99) |
classifies the given floating-point value (function macro) |
(哋它亢99) |
checks if the given number has finite value (function macro) |
(哋它亢99) |
checks if the given number is infinite (function macro) |
(哋它亢99) |
checks if the given number is normal (function macro) |
(哋它亢99) |
checks if two floating-point values are unordered (function macro) |