Maison >développement back-end >Tutoriel Python >Comment surmonter les erreurs de virgule flottante tout en préservant la précision des calculs ?

Comment surmonter les erreurs de virgule flottante tout en préservant la précision des calculs ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-21 14:58:02813parcourir

How to Overcome Floating Point Errors While Preserving Accuracy in Calculations?

Comment gérer les erreurs à virgule flottante sans sacrifier la précision

Lorsque vous travaillez avec l'arithmétique à virgule flottante, vous pouvez rencontrer des erreurs dues à la nature approximative de sa représentation. Cela peut poser un défi lorsque vous recherchez une grande précision dans vos calculs.

Une approche pour résoudre ce problème consiste à comprendre les limites de la représentation en virgule flottante. En Python, la virgule flottante binaire utilisée (« double précision ») représente généralement des valeurs décimales à l'aide d'approximations. Cela signifie que l'ajout d'une petite valeur comme 0,01 n'est pas précis et peut entraîner des erreurs inattendues, comme dans l'exemple fourni :

<code class="python">def sqrt(num):
    root = 0.0
    while root * root < num:
        root += 0.01
    return root</code>

Pour éviter de telles erreurs, vous pouvez utiliser le module décimal de Python. Le type Decimal permet une arithmétique décimale précise, garantissant que des valeurs telles que 0,01 sont représentées exactement. En modifiant la fonction sqrt pour utiliser le type Decimal, vous pouvez éliminer les erreurs d'arrondi :

<code class="python">from decimal import Decimal as D

def sqrt(num):
    root = D(0)
    while root * root < num:
        root += D("0.01")
    return root</code>

Alternativement, si vous préférez vous en tenir aux flottants, vous pouvez incrémenter vos calculs en utilisant des valeurs qui sont précisément représentables sous forme de flottants binaires. Cela implique d'utiliser des valeurs sous la forme I/2**J, telles que 0,125 (1/8) ou 0,0625 (1/16).

De plus, l'utilisation de la méthode de Newton pour calculer les racines carrées peut également améliorer la précision lorsque traitant de l'arithmétique à virgule flottante.

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!

Déclaration:
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