|
Édition du: 19/11/2025 |
|
INDEX |
NOMBRES 0 et ∞ & Non-NOMBRE |
|||
|
Not a Number (NaN) |
||||
![]()
|
Not a NUMBER (NaN) En mathématiques et en informatique, chaque valeur est censée avoir
une définition précise et une place déterminée sur la droite numérique.
Pourtant, il existe une exception fondamentale, une représentation de
l'indéfinissable : NaN, acronyme de Not a Number. Loin d'être une erreur, NaN est un concept normalisé, essentiel à la
robustesse du calcul numérique. Il représente le résultat d'opérations
impossibles ou indéfinies dans le domaine des nombres réels, agissant comme
un tampon qui permet aux programmes informatiques de continuer à s'exécuter
plutôt que de s'effondrer brutalement.
|
||
|
|
Sommaire de cette page >>> Approche >>> Culture (historique et langues) >>> Codage >>> Propriétés >>> Opérations >>> Bilan |
Débutants Glossaire |
|
En bref La notion de NaN, acronyme de "Not a Number",
désigne une valeur spéciale utilisée:
En fait, NaN est un symbole qui représente une quantité
numérique dont la valeur ne peut pas être déterminée. Ce qui est souvent le
cas lorsque le zéro et l'infini sont mal utilisés. |
Informatique En programmation, une division par zéro ou une racine
invalide provoquait souvent l'arrêt immédiat du programme (crash). NaN a été
introduit pour permettre le calcul flottant résilient. Au lieu d'interrompre le processus, le processeur
renvoie une valeur spéciale "NaN" et continue l'exécution. Cela permet à l'algorithme de gérer l'erreur plus tard
ou de propager l'information d'échec jusqu'à la sortie finale. |
||||||||||||||||||||
|
Cas d'usage Un NaN est une valeur spéciale utilisée dans les
calculs en virgule flottante pour représenter :
Certaines opérations donnent un résultat non
définissable dans le format utilisé :
|
Exemples
|
||||||||||||||||||||
Voir Brève
63-1363
|
Origine historique L’idée d’un symbole d’indétermination existe en
mathématiques depuis longtemps; par exemple l’usage informel de "indéterminé".
En informatique, NaN a été standardisé avec la norme
IEEE 754 (1985 et versions ultérieures). Utilisation particulière
|
Langue Il n’existe aucune traduction officielle dans les
normes. L’acronyme anglais NaN est universel pour garantir la
compatibilité internationale.
|
|
|
Anglais NaN (Not a Number)
is, in computing, a value (or symbol) that is usually produced as the result
of an operation on invalid input operands, especially in floating-point
calculations. NaNs are close to
some undefined or inderterminate expressions in mathematics. In short, NaN is
not really a number but a symbol that represents a numerical quantity whose
magnitude cannot be determined by the operating system. This mainly occurs
when infinity and zero are misused in expressions. |
||
|
Un
nombre à virgule flottante est composé de trois parties : 1.
Le Signe (1 bit) 2.
L'Exposant 3.
La Mantisse |
Tous
les bits à 1 dans l'exposant ET:
|
|
NaN n’est pas un nombre |
Mathématiquement,
NaN n’appartient pas à l’ensemble ℝ. Il se
comporte comme un élément spécial hors de la structure d’un corps
ou d’un espace métrique standard. |
|
|
Non réflexivité et indétermination
des comparaisons |
Les
comparaisons impliquant NaN ne satisfont pas aux propriétés usuelles de
l’ordre total : toute comparaison d’égalité ou d’ordre avec NaN est fausse, y
compris NaN = NaN. Paradoxe
de la comparaison:
Ainsi
l’égalité réflexive
et la transitivité associées aux comparaisons réelles ne tiennent plus. |
|
|
Logique à trois états |
L’apparition
de NaN introduit une logique ternaire
implicite dans les calculs numériques : vrai,
faux, NaN. Ceci
demande un raisonnement adapté dans les preuves formelles ou analyses
numériques.
|
|
|
Propagation et clôture |
Dans
la plupart des situations, NaN est absorbant
pour les opérations
arithmétiques usuelles : toute opération binaire où un opérande est NaN
renvoie NaN (propagation), ce qui permet d’isoler l’indétermination sans
interrompre le calcul. |
|
|
Contamination |
NaN
est viral. Dans la grande majorité des opérations arithmétiques, si un des
opérandes est NaN, le résultat sera NaN. |
|
|
Arithmétique et propagation |
Les opérationa arithmétiques (Addition,
multiplication, etc.), impliquant NaN renvoient NaN dans la pratique normale,
empêchant des résultats incorrects qui passeraient inaperçus. Les opérations produisant un résultat infini peuvent
conduire à NaN si des formes indéterminées surviennent. |
|
|
Comparaisons et tri |
NaN n'est égal à rien, pas même à lui-même. En programmation : isnan(x)
est la façon correcte de tester l’indétermination. Lorsqu’un tableau contenant NaN est trié, la
position de NaN dépend de l’algorithme
et de l’implémentation ; il faut décider explicitement comment traiter les
NaN (les éliminer, les placer en fin, ou lever une erreur). NaN est considéré comme non ordonnable. |
|
|
Tests d’égalité |
NaN n'obéit pas aux hypothèses habituelles sur
l’égalité. Il peut conduire à des comportements inattendus dans les
structures de données (ensembles, dictionnaires) si l’égalité est utilisée
pour l’indexation. |
|
|
Équations et méthodes
numériques |
En analyse numérique, NaN signale souvent échec de
convergence, dépassement d’un domaine de définition, ou propagation d’une
donnée corrompue. Les méthodes robustes doivent détecter NaN tôt et
fournir stratégies de récupération ou diagnostics (vérification d’existence
de NaN dans résidus, vecteurs d’état, etc.). |
|
|
Performance en informatique |
En calcul automatisé, la propagation de NaN évite
les branchements coûteux mais peut masquer l’origine de l’erreur. L’utilisation des NaN ou des outils de débogage
spécialisés permet une détection fine sans pénaliser l’exécution. |
|
|
Interopérabilité entre
langages |
Les conventions IEEE 754 assurent une compatibilité
raisonnable, mais des différences subsistent (ex. traitement des blocs de
données, comportement de comparaison et conversion en texte). Il faut documenter les choix de gestion des NaN dans
les API. |
|
|
Bien
compris et maîtrisé, le symbole NaN est un outil précieux pour la robustesse
des calculs numériques et la qualité des systèmes logiciels. NaN
ne doit pas être vu comme un échec du système, mais plutôt une sécurité. |
NaN
est un concept essentiel en mathématiques et en informatique : il formalise
l’idée d’une valeur numérique indéfinie ou invalide et permet de poursuivre
les calculs sans interruption tout en signalant l’existence d’un problème. Mathématiquement,
NaN échappe aux propriétés classiques des nombres réels ; informatiquement,
la norme IEEE 754 fournit une représentation standardisée. Pour
un usage sûr et robuste il est nécessaire de :
|
![]()
|
Voir |
|
|
Sites |
|
|
Cette page |