Bonjour à tous! Nous utilisons souvent des nombres familiers dans nos langages de programmation préférés. Habituel est 1, -1,5, pi ou même complexe. Mais NaN, + Inf, -Inf est utilisé par nous beaucoup moins souvent.
Remarque:
Dans l'article, j'utilise les fonctions élémentaires de Python version 3.6.8, mais beaucoup seront pertinentes pour d'autres langages, par exemple, pour JS.
Il y a pas mal de situations incertaines en mathématiques. Par exemple, il s'agit d'une division par 0.
Saisie dans la console
1/0
Vous obtiendrez une erreur ZeroDivisionError. Attendu, dites-vous? Oui Essayons un autre exemple:
0**0
Comme vous le savez, 0 à la puissance de 0 est une incertitude mathématique classique.
Cependant, Python dit qu'il s'agit de 1. Une question raisonnable se pose:

Pourquoi ne sommes-nous pas autorisés à «tirer dans le pied» divisé par 0, mais ils rapportent le mauvais résultat avec une action aussi indéfinie?
Peut-être que quelqu'un est indigné en ce moment et crie que la réponse est simple: IEEE 754. Et si je ne me trompe pas, c'est avec son aide que nous avons convenu que tout nombre en degré 0 est 1.
C'est là que le plaisir commence. JavaScript prend également en charge IEEE (0,1 + 0,2! = 0,3), mais 1/0 est l'infini, pas une erreur de division par 0.
En conséquence, nous avons (tous les exemples pour python):
1. Erreurs générées par des actions incorrectes
Exemples:
1/0
2. Renvoyer des valeurs incorrectes
Un exemple:
0**0
3. Renvoyer des valeurs spéciales:
+ -Inf, nan
Un exemple:
inf=float('inf') inf-inf
À mon avis, cela prête à confusion.
Aujourd'hui encore, j'ai remarqué un comportement PHP intéressant:
var_dump(mt_rand(INF,INF));
Je suis catégoriquement contre 2 options et je soutiens probablement 1.
Parce que, comme le montre l'exemple PHP, vous devez utiliser inf et nan avec prudence. Qu'en penses-tu?