Division par zéro - Définition

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

En informatique

En informatique, suivant le standard IEEE 754, un résultat est prévu pour la division par 0.

Tout nombre positif non-nul divisé par 0 donne Inf (l'infini), tandis qu'un nombre négatif donne -Inf. Cependant il est aussi prévu que le diviseur ait une valeur de zéro, tout en ayant son signe négatif (-0). Dans ce cas, le signe de l'infini est inversé. Techniquement, cela vient du fait que dans le codage des nombres à virgule flottante en informatique, un bit indique si le nombre est positif ou négatif, les autres bits représentant la valeur absolue.

De plus, il faut noter qu'on peut trouver zéro comme produit de deux nombres non-nuls, s'ils sont si petits que leur produit est inférieur au plus petit nombre représentable, ou comme résultat d'autres opérations pour lesquelles la précision des nombres tels qu'évalués par l'ordinateur joue. La division par zéro en informatique peut donc se produire même quand le modèle prédit qu'une variable ne peut pas faire zéro.

0/0 donne pour sa part NaN (« Not a Number », ce qui signifie en anglais « pas un nombre »), tout comme de multiplier Inf ou -Inf par 0, ou de soustraire Inf à Inf. Donc si on a quelque part effectué une division par zéro, on trouve ensuite souvent une variable qui vaut NaN.

Ce qui arrive après une division par zéro dépend des choix faits par le programmeur, mais il est assez souvent préférable de prévoir que le programme interrompe son exécution dès qu'une variable vaut Inf, -Inf ou NaN, plutôt que de le laisser continuer à se dérouler en se basant sur de telles valeurs, qui sont relativement inutilisables pour prendre des décisions.

Par exemple, supposons que l'on souhaite comparer deux nombres x et y ; on obtient en fait les quantités z*x et z*y. On les redivise par z. Finalement, si z valait en fait 0, on obtient NaN pour les deux valeurs, ce qui ne permet pas de déterminer laquelle des deux est la plus grande. Même si les ordinateurs ont des réponses conventionnelles pour ces comparaisons, il est souvent préférable que le programme envoie un message d'alerte pour signaler qu'en raison d'une division par zéro, les résultats sont inutilisables.

D'autres calculateurs ont comme convention de renvoyer l'erreur spécifique « division par zéro ». C'est généralement le cas des calculatrices de poche. Exemple particulier, le logiciel de mathématiques Maple renvoie une erreur si la division est faite sous forme symbolique (par exemple 1/0 ou π/0), mais « l'infini des flottants » (ou moins l'infini) si un des nombres est à virgule flottante.

Annulation catastrophique

Pour comprendre les raisons d'une division par zéro, il faut mentionner la notion d'« annulation catastrophique » (Catastrophic cancellation). Pour des nombres enregistrés dans la mémoire d'un ordinateur, on utilise généralement la représentation en virgule flottante. Or, cela signifie que les nombres ne peuvent être connus qu'avec une précision relative limitée. L'annulation catastrophique est la soustraction de deux nombres qui ne sont pas formellement égaux, mais le sont dans la limite de la précision utilisée.

Donc, bien que d'un pur point de vue mathématique l'exponentielle d'un nombre strictement supérieur à 0 est strictement supérieure à 1, en informatique 1/(exp(x)-1) provoquera une division par zéro, non seulement si x est nul, mais aussi quand x est non-nul mais que exp(x) est un nombre trop peu différent de 1 pour être distingué en représentation flottante — sachant qu'un nombre est bien plus efficacement distingué de 0 que de toute autre valeur.

Page générée en 0.084 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise