Je travaille quotidiennement avec Python 2.4 dans mon entreprise. J'ai utilisé la fonction logarithm polyvalente 'log' de la bibliothèque mathématique standard, et quand j'ai entré le journal (2 ** 31, 2) il a retourné 31.000000000000004, ce qui m'a paru étrange.Logarithme inexact en Python
J'ai fait la même chose avec d'autres puissances de 2, et cela a fonctionné parfaitement. J'ai couru 'log10 (2 ** 31)/log10 (2)' et j'ai obtenu un tour 31.0
J'ai essayé d'exécuter la même fonction d'origine dans Python 3.0.1, en supposant qu'il a été corrigé dans une version plus avancée.
Pourquoi cela se produit-il? Est-il possible qu'il y ait des inexactitudes dans les fonctions mathématiques en Python?
double de la question du point Floating pérenne (pourquoi je reçois des erreurs à virgule flottante), ne peut pas trouver le meilleur double Q pour poster, peut-être que quelqu'un d'autre le peut. –
Je dois préciser que Python 3 n'a * pas * corrigé l'erreur de virgule flottante. Au lieu de cela, la sortie d'impression utilise un algorithme intelligent pour afficher la valeur de virgule flottante souhaitée, au lieu du mou. –