Maison > développement back-end > Tutoriel Python > Pourquoi les nombres à virgule flottante en Python provoquent-ils des erreurs d'arrondi et comment y remédier ?

Pourquoi les nombres à virgule flottante en Python provoquent-ils des erreurs d'arrondi et comment y remédier ?

Susan Sarandon
Libérer: 2024-12-02 21:09:28
original
864 Les gens l'ont consulté

Why Do Floating-Point Numbers in Python Cause Rounding Errors and How Can They Be Addressed?

Erreur d'arrondi de Python avec les nombres à virgule flottante

Lorsque vous travaillez avec des nombres à virgule flottante en Python, il est crucial d'être conscient du potentiel pour les erreurs d’arrondi. Ces erreurs surviennent parce que les nombres à virgule flottante ne peuvent que se rapprocher des nombres réels et que certaines valeurs peuvent être représentées différemment en fonction de leur proximité avec des puissances exactes de deux.

Par exemple, considérons l'extrait de code :

for i_delta in range(0, 101, 1):
  delta = float(i_delta) / 100
  (...)
  filename = 'foo' + str(int(delta * 100)) + '.dat'
Copier après la connexion

Dans ce code, les valeurs de delta suivantes donneront des fichiers identiques :

  • delta = 0,29 et delta = 0,28999999999999998
  • delta = 0,58 et delta = 0,579999999999999996

Cela se produit parce que le résultat exact de float(29) / 100 est 0,289999999999999998, qui est arrondi à 0,28. De même, float(58) / 100 est arrondi à 0,579999999999999996.

Il est important de noter que cette erreur d'arrondi n'est pas systématique et n'affecte pas tous les entiers. Pour mieux comprendre ces erreurs, considérez le code suivant :

import sys

n = int(sys.argv[1])

for i in range(0, n + 1):
  a = int(100 * (float(i) / 100))
  if i != a: print i, a
Copier après la connexion

Lors de son exécution, ce code affichera des paires de nombres pour lesquelles l'erreur d'arrondi se produit. En analysant ces paires, il est possible d'identifier que les erreurs ont tendance à se produire pour des nombres qui ne peuvent pas être représentés comme des puissances exactes de deux.

Pour résoudre ce problème, il est recommandé d'utiliser l'arithmétique exacte lorsque cela est possible et d'être conscient des limitations et des erreurs d'arrondi associées aux nombres à virgule flottante. Pour en savoir plus, consultez l'article « Ce que tout informaticien devrait savoir sur l'arithmétique à virgule flottante » pour un guide complet sur ce sujet complexe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal