L'augmentation de précision en virgule flottante en Python
Je travaille sur un projet pour calculer la Leibniz approximation de pi avec le code ci-dessous:
def pi(precision):
sign = True
ret = 0
for i in range(1,precision+1):
odd = 2 * i - 1
if sign:
ret += 1.0 / odd
else:
ret -= 1.0 / odd
sign = not sign
return ret
Toutefois, la valeur de sortie a toujours été de 12 chiffres. Comment puis-je augmenter la précision (par exemple, plus de chiffres) du calcul? Python soutien plus précis floating points, ou devrai-je utiliser certains de bibliothèque externe?
Quelle étrange de la valeur de pi:
Oui, elle se rapproche d'un quart de pi. voir ici: en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80
Drôle de méthode pour la mise en oeuvre de l'évaluation, il converge si lent.
>>> repr(pi(17))
rendements '0.8000913788523872'
Oui, elle se rapproche d'un quart de pi. voir ici: en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80
Drôle de méthode pour la mise en oeuvre de l'évaluation, il converge si lent.
OriginalL'auteur hkk | 2014-01-12
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser
Decimal
.Lire Précision arbitraire élémentaire des fonctions mathématiques (Python)d'origine pour plus d'informations
OriginalL'auteur albusshin
Python
float
cartes de type à ce que votre plate-forme de C compilateur appelle undouble
(voir http://en.wikipedia.org/wiki/IEEE_floating_point_number).Le Python standard library est également livré avec une précision arbitraire décimal module, appelé
decimal
: http://docs.python.org/2/library/decimal.htmlOriginalL'auteur Max Noel
Avec Python flottant, vous bénéficiez de 15 à 17 chiffres de précision (si vous voyez de moins en moins, vous devrez peut-être utiliser un autre spécificateur de format lors de l'impression).
Si vous avez besoin de plus, vous aurez besoin d'utiliser une autre méthode (qui n'utilise l'arithmétique des nombres entiers), ou une autre façon de représenter les nombres à virgule flottante.
Voir Python à virgule flottante en précision arbitraire disponible?
float.__str__
garnitures jusqu'à 12 chiffres.OriginalL'auteur NPE
La formule de Leibniz converge très lentement, et honnêtement, vous ne vivrai pas assez longtemps pour obtenir les 12 chiffres de précision. Cliquez ici pour un moyen d'accélérer énormément.
OriginalL'auteur Tim Peters