isnan
| Definiert in Header <math.h> |
||
| #define isnan(arg) /* implementation defined */ |
(seit C99) | |
Bestimmt, ob die gegebene Gleitkommazahl arg ein "Not-a-Number" (NaN) Wert ist. Das Makro gibt einen ganzzahligen Wert zurück.
FLT_EVAL_METHOD wird ignoriert: Selbst wenn das Argument mit mehr Reichweite und Präzision als sein Typ ausgewertet wird, wird es zuerst in seinen semantischen Typ konvertiert, und die Klassifizierung basiert auf diesem (dies ist wichtig, wenn der Auswertungstyp NaNs unterstützt, während der semantische Typ dies nicht tut).
Inhalt |
[bearbeiten] Parameter
| arg | - | Gleitkommawert |
[bearbeiten] Rückgabewert
Ein nicht-null ganzzahliger Wert, wenn arg ein NaN ist, 0 sonst.
[bearbeiten] Hinweise
Es gibt viele verschiedene NaN-Werte mit unterschiedlichen Vorzeichenbits und Payloads, siehe nan.
NaN-Werte sind nie gleich sich selbst oder anderen NaN-Werten. Das Kopieren eines NaN kann sein Bitmuster ändern.
Ein anderer Weg, um zu testen, ob ein Gleitkommawert NaN ist, ist, ihn mit sich selbst zu vergleichen: bool is_nan(double x) { return x != x; }
[bearbeiten] Beispiel
#include <float.h> #include <math.h> #include <stdio.h> 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(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0)); printf("isnan(0.0 / 0.0) = %d\n", isnan(0.0 / 0.0)); printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY)); }
Mögliche Ausgabe
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
[bearbeiten] Referenzen
- C23-Standard (ISO/IEC 9899:2024)
- 7.12.3.4 Das isnan-Makro (S: TBD)
- C17-Standard (ISO/IEC 9899:2018)
- 7.12.3.4 Das isnan-Makro (S: TBD)
- C11-Standard (ISO/IEC 9899:2011)
- 7.12.3.4 Das isnan-Makro (S: 236-237)
- C99-Standard (ISO/IEC 9899:1999)
- 7.12.3.4 Das isnan-Makro (S: 217)
[bearbeiten] Siehe auch
| (C99)(C99)(C99) |
gibt eine NaN (Not-a-Number) zurück (Funktion) |
| (C99) |
klassifiziert den gegebenen Gleitkommawert (Funktionsmakro) |
| (C99) |
prüft, ob die gegebene Zahl endlich ist (Funktionsmakro) |
| (C99) |
prüft, ob die gegebene Zahl unendlich ist (Funktionsmakro) |
| (C99) |
prüft, ob die gegebene Zahl normal ist (Funktionsmakro) |
| (C99) |
prüft, ob zwei Gleitkommawerte ungeordnet sind (Funktionsmakro) |
| C++ Dokumentation für isnan
| |