_fpclass, _fpclassl
Nach oben zu Float.h - Index
Header-Datei
float.h
Kategorie
Mathematische Routinen
Prototyp
int _fpclass(double d);
int _fpclassl(long double ld);
Beschreibung
Gibt einen Integerwert zurück, der den Typ (die Klasse) eines IEEE-Real für double-Werte repräsentiert. Dieser Wert enthält Informationen zur Gleitkommaklasse des Arguments.
_fpclassl ist die long double-Version. Sie benötigt ein long double-Argument und gibt den Typ (die Klasse) eines IEEE-Real für Werte vom Typ long double zurück.
Rückgabewert
Gibt einen Integerwert zurück, der die Gleitkommaklasse des Arguments angibt. Die in der folgenden Tabelle aufgeführten möglichen Werte sind in FLOAT.H definiert.
_FPCLASS_UNSUP |
Nicht unterstütztes IEEE-Format |
_FPCLASS_SNAN |
Zeichen NaN |
_FPCLASS_QNAN |
Quiet NaN |
_FPCLASS_NINF |
Negativ unendlich |
_FPCLASS_NN |
Negative normalisierte Nicht-Null |
_FPCLASS_ND |
Negativ denormalisiert |
_FPCLASS_NZ |
Negative Null (-0,0) |
_FPCLASS_PZ |
Positive Null (+0,0) |
_FPCLASS_PD |
Positiv denormalisiert |
_FPCLASS_PN |
Positive normalisierte Nicht-Null |
_FPCLASS_PINF |
Positiv unendlich |
Beispiel
#include <float.h> #include <stdio.h> /* a und b vergleichen */ int compare(double a, double b) { /* Nur wenn beide endlich sind. */ if (_finite(a) && _finite(b)) { if (a < b) return -1; else if (a > b) return 1; else return 0; } else { /* Bei unendlichen Werten die Klasse der Zahlen überprüfen */ int class_a = _fpclass(a); int class_b = _fpclass(b); /* Unendliche überprüfen und vergleichen */ if (class_a == _FPCLASS_NINF) { if (class_b == _FPCLASS_NINF) return 0; else return -1; } else if (class_a == _FPCLASS_PINF) { if (class_b == _FPCLASS_PINF) return 0; else return 1; } } /* Keine Beziehung gefunden! */ return -1; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_fpclass |
+ |
|||
_fpclassl |
+ |