NaN
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

NaN (« Not a Number », en français « pas un nombre ») est, en informatique, une valeur ou un symbole produit par le résultat d'une opération arithmétique invalide, plus spécialement dans les calculs utilisant la virgule flottante. Par exemple, la plupart des unités de calcul en virgule flottante étant incapables de calculer la racine carrée (La racine carrée d’un nombre réel positif x est le nombre positif dont le carré vaut x. On le note ou x½; dans cette expression, x est appelé le radicande.) de nombres négatifs, elles indiqueront que l'opération est invalide et donneront alors un résultat équivalent à NaN (NaN (« Not a Number », en français « pas un nombre ») est, en informatique, une valeur ou un symbole produit...).

Le NaN fait partie du standard IEEE 754.

Propriétés

Obtenir NaN comme résultat

On obtient NaN pour toutes les opérations qui sont des indéterminées mathématiques : 0/0, ∞-∞, ∞/∞, 0*∞, et dans certaines librairies 1.

Opérations avec NaN

NaN est en quelque sorte un élément absorbant. N'importe quoi additionné, multiplié, ou toute fonction mathématique appliquée à NaN donne NaN. Même NaN+∞ donne NaN, alors que pour tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) x, (donc, pas NaN ni -∞), x+∞ donne ∞.

Comparaisons

NaN est une valeur qui a des propriétés unique par rapport à tous les nombres. En particulier, toute comparaison "égal", "supérieur", "inférieur", "supérieur ou égal", "inférieur ou égal" impliquant NaN donne la réponse booléenne "faux", alors que toute comparaison "différent" donne le résultat "vrai".

Cela conduit même à ce que la comparaison "NaN==NaN" ("==" signifie "est-ce que ces valeurs sont égales) donne la réponse "faux". C'est la seule valeur ayant cette propriété (même l'infini (Le mot « infini » (-e, -s ; du latin finitus, « limité »), est un adjectif servant à qualifier quelque chose qui n'a pas de...), en IEEE 754, donne "vrai" pour la requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :) "Inf==Inf").

NaN est également la seule valeur de x pour laquelle on ait la réponse "faux" à la question "x<=Inf" (« x est-il inférieur ou égal à l'infini ? »).

De ce qui précède, on déduit que si l'on veut vérifier si x vaut NaN, faire « x==NaN » serait une erreur. Il faut plutôt faire « x~=x », qui répondra « vrai » si x vaut NaN

Cela peut être un moyen efficace de poser au programme la question "est-ce que x est NaN ?" dans un langage qui ne dispose pas d'une fonction spécialisée pour cela.

Ces propriétés, en particulier le fait que deux NaN ne se valent pas, paraissent assez choquantes si on traite NaN comme un nombre. Elles se comprennent mieux quand on admet que NaN signifie que la valeur ne peut être connue.

Page générée en 0.042 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique