Obtenir des informations sur les nombres avec sys.float_info et sys.int_info en Python

1. À propos de sys.float_info et sys.int_info

Le module sys fournit plusieurs informations sur le fonctionnement de l'interpréteur Python. Parmi elles, sys.float_info décrit les caractéristiques des nombres à virgule flottante de type float, tandis que sys.int_info fournit des informations sur la représentation interne des nombres entiers de type int.

Il est important de ne pas confondre les deux. sys.float_info renseigne notamment sur les limites et la précision des nombres flottants, alors que sys.int_info décrit surtout certains paramètres de la représentation interne des entiers Python.

Le programme suivant affiche les deux objets afin d'avoir une première vue des informations qu'ils contiennent.

Sortie possible :

Le contenu exact de sys.int_info peut varier selon la version et l'implémentation de Python. Les informations affichées dans ce tutoriel correspondent principalement à CPython.

2. Afficher les informations sur les nombres flottants avec sys.float_info

sys.float_info fournit un ensemble d'attributs décrivant les caractéristiques des nombres float utilisés par Python. Sur les implémentations courantes, ces nombres correspondent généralement aux nombres à double précision du système sous-jacent.

Le programme suivant affiche plusieurs attributs importants de sys.float_info.

Sortie possible :

Ces attributs permettent d'étudier les limites, la précision et certaines propriétés de la représentation des nombres flottants.

3. Connaître les valeurs maximale et minimale des nombres flottants

L'attribut sys.float_info.max fournit la plus grande valeur flottante finie positive représentable. L'attribut sys.float_info.min fournit, quant à lui, la plus petite valeur flottante positive normalisée.

Le programme suivant affiche ces deux valeurs.

Sortie possible :

Une remarque importante s'impose : sys.float_info.min ne représente pas le nombre flottant négatif minimal et ne représente pas non plus nécessairement le plus petit nombre positif non nul pouvant exister.

Le nombre flottant fini négatif de plus grande amplitude peut être obtenu en prenant l'opposé de sys.float_info.max.

Sortie possible :

Des valeurs positives plus petites que sys.float_info.min peuvent exister sous forme de nombres subnormaux. Ainsi, l'attribut min doit bien être compris comme la plus petite valeur positive normalisée.

4. Connaître la précision des nombres flottants

sys.float_info.dig fournit une information importante sur la précision décimale des nombres flottants. Il indique le nombre maximal de chiffres décimaux significatifs pouvant être convertis en nombre flottant puis reconvertis en décimal en conservant la même valeur décimale.

Le programme suivant affiche cette valeur.

Sortie possible :

L'attribut mant_dig indique quant à lui le nombre de chiffres en base radix utilisés pour représenter la significande d'un nombre flottant.

Le programme suivant affiche mant_dig et radix.

Sortie possible :

Dans cet environnement, la significande possède donc une précision de 53 chiffres binaires. Cela explique en partie pourquoi les nombres flottants ne peuvent pas représenter exactement tous les nombres décimaux.

5. Comprendre epsilon avec sys.float_info.epsilon

L'attribut sys.float_info.epsilon représente la différence entre 1.0 et la plus petite valeur flottante représentable strictement supérieure à 1.0.

Le programme suivant affiche la valeur d'epsilon.

Sortie possible :

Nous pouvons vérifier le rôle de cette valeur en l'ajoutant à 1.0.

Sortie :

Si nous ajoutons une quantité plus petite, comme epsilon / 2, l'arrondi peut conduire à retrouver exactement 1.0.

Sortie :

Il faut toutefois éviter d'utiliser systématiquement epsilon comme tolérance universelle pour comparer deux nombres flottants. La précision dépend de l'ordre de grandeur des nombres comparés. Pour les comparaisons numériques, des outils comme math.isclose() sont souvent plus appropriés.

6. Afficher les informations sur les entiers avec sys.int_info

Contrairement à sys.float_info, sys.int_info ne fournit pas une valeur entière maximale ou minimale. Les entiers Python peuvent avoir une précision arbitraire, limitée en pratique principalement par la mémoire disponible et les contraintes de l'environnement.

sys.int_info fournit plutôt des informations sur la manière dont les entiers sont représentés en interne par l'implémentation Python.

Le programme suivant affiche les informations disponibles.

Sortie possible :

Nous pouvons accéder individuellement aux principaux attributs.

Sortie possible :

Les attributs disponibles peuvent dépendre de la version de Python. Les deux premiers décrivent directement la représentation interne des grands entiers dans CPython, tandis que les suivants concernent notamment certaines limites de conversion entre entiers et chaînes décimales.

7. Comprendre la représentation des grands entiers

En Python, le type int n'est pas limité à une valeur maximale fixe comparable à sys.float_info.max. Lorsqu'un entier devient plus grand, Python utilise davantage de mémoire pour le représenter.

Le programme suivant crée plusieurs entiers de tailles très différentes.

Sortie :

Le dernier entier contient 1001 chiffres décimaux. Python peut le représenter sans débordement du type int.

Nous pouvons utiliser sys.getsizeof() pour constater que les grands entiers nécessitent davantage de mémoire.

Sortie possible :

Les valeurs exactes peuvent varier selon l'implémentation et l'environnement Python, mais le principe reste le même : plus un entier nécessite de chiffres internes pour être représenté, plus sa représentation peut demander de mémoire.

8. Comprendre la différence entre float_info et int_info

sys.float_info et sys.int_info concernent deux types numériques dont le fonctionnement est très différent.

Les nombres float possèdent une précision et une plage finies. Les nombres int, en revanche, peuvent augmenter en taille en utilisant davantage de mémoire.

Caractéristiquesys.float_infosys.int_info
Type concernéfloatint
Valeur maximaleDisponible avec maxPas de maximum fixe fourni
PrécisionLimitéePrécision arbitraire pour les entiers
EpsilonDisponibleNon applicable
Informations internesCaractéristiques de la représentation flottanteCaractéristiques de la représentation des entiers

Le programme suivant illustre directement cette différence en essayant de dépasser la plage d'un nombre flottant tout en créant un entier extrêmement grand.

Sortie possible :

Le grand entier reste un objet int exact, tandis que le dépassement de la plage finie du float conduit ici à la valeur spéciale inf, qui représente l'infini positif.

9. Utiliser float_info et int_info dans un programme

Les informations fournies par sys.float_info peuvent être utiles pour examiner les caractéristiques numériques de l'environnement Python utilisé.

Le programme suivant affiche un petit rapport sur la représentation des nombres flottants.

Sortie possible :

De la même manière, sys.int_info permet d'inspecter certains paramètres utilisés pour les entiers.

Sortie possible :

Ces informations sont surtout utiles pour comprendre le fonctionnement interne de Python, étudier la représentation des nombres ou écrire du code nécessitant des informations précises sur l'environnement d'exécution.

10. À retenir !

Le module sys fournit sys.float_info et sys.int_info pour obtenir des informations sur la représentation des nombres dans Python.

  • sys.float_info décrit les caractéristiques des nombres de type float.
  • sys.float_info.max donne la plus grande valeur flottante finie positive représentable.
  • sys.float_info.min donne la plus petite valeur flottante positive normalisée.
  • sys.float_info.dig fournit une information sur la précision décimale des nombres flottants.
  • sys.float_info.mant_dig indique la précision de la significande dans la base indiquée par radix.
  • sys.float_info.epsilon représente l'écart entre 1.0 et le plus petit flottant représentable strictement supérieur à 1.0.
  • sys.int_info fournit des informations sur la représentation interne des entiers Python.
  • Les objets int Python n'ont pas de valeur maximale fixe analogue à sys.float_info.max.
  • Les grands entiers utilisent davantage de mémoire lorsque leur valeur augmente.
  • Les valeurs et attributs disponibles peuvent dépendre de la version et de l'implémentation de Python.

Le programme suivant résume les informations numériques essentielles fournies par sys.float_info et sys.int_info.

Sortie possible :

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *