isnan
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<math.h>
|
||
|
#define isnan(arg) /* implementation defined */
|
(depuis C99) | |
Détermine si le nombre à virgule flottante donné arg est une valeur non numérique (NaN). La macro retourne une valeur entière.
FLT_EVAL_METHOD est ignoré : même si l'argument est évalué avec plus de portée et de précision que son type, il est d'abord converti en son type sémantique, et la classification est basée sur celui-ci (cela importe si le type d'évaluation prend en charge les NaNs, tandis que le type sémantique ne le fait pas).
Table des matières |
Paramètres
| arg | - | valeur à virgule flottante |
Valeur de retour
Valeur entière non nulle si arg est un NaN, 0 sinon.
Notes
Il existe de nombreuses valeurs NaN différentes avec des bits de signe et des charges utiles variés, consultez nan .
Les valeurs NaN ne sont jamais égales à elles-mêmes ou à d'autres valeurs NaN. La copie d'un NaN peut modifier son motif de bits.
Une autre manière de tester si une valeur à virgule flottante est NaN est de la comparer avec elle-même : bool is_nan ( double x ) { return x ! = x ; }
Exemple
#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)); }
Sortie possible :
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
Références
- Norme C23 (ISO/IEC 9899:2024):
-
- 7.12.3.4 La macro isnan (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.12.3.4 La macro isnan (p: TBD)
- Norme C11 (ISO/IEC 9899:2011):
-
- 7.12.3.4 La macro isnan (p: 236-237)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.12.3.4 La macro isnan (p: 217)
Voir aussi
|
(C99)
(C99)
(C99)
|
retourne un NaN (not-a-number)
(fonction) |
|
(C99)
|
classe la valeur en virgule flottante donnée
(macro de fonction) |
|
(C99)
|
vérifie si le nombre donné a une valeur finie
(macro de fonction) |
|
(C99)
|
vérifie si le nombre donné est infini
(macro de fonction) |
|
(C99)
|
vérifie si le nombre donné est normal
(macro de fonction) |
|
(C99)
|
vérifie si deux valeurs en virgule flottante ne sont pas ordonnées
(macro de fonction) |
|
Documentation C++
pour
isnan
|
|