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'
Dans ce code, les valeurs de delta suivantes donneront des fichiers identiques :
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
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!