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

Susan Sarandon
Libérer: 2024-10-21 14:58:02
original
746 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!