Select the product you need help with
L'arithmétique en virgule flottante peut fournir des résultats incorrects dans ExcelNuméro d'article: 78113 - Voir les produits auxquels s'applique cet article SommaireRésumé Cet article décrit comment Microsoft Excel stocke et calcule les nombres à virgule flottante. Ceci peut modifier les résultats de certains nombres ou de certaines formules en raison de l'arrondissement ou de la troncature des données. PrésentationMicrosoft Excel a été conçu sur la base de la spécification IEEE 754 en ce qui concerne le stockage et le calcul de nombres à virgule flottante. IEEE (Institute of Electrical and Electronics Engineers) est un organisme international qui détermine notamment les standards utilisés pour les logiciels et matériels informatiques. La spécification 754 est une norme largement adoptée décrivant la façon dont les nombres à virgule flottante doivent être stockés dans un ordinateur binaire. Son usage est répandu car elle permet de stocker les nombres à virgule flottante dans un espace relativement réduit et d'effectuer des calculs assez rapidement. La norme 754 est utilisée dans les processeurs d'unités de virgule flottante et de données numériques de pratiquement tous les microprocesseurs basés sur PC existant sur le marché aujourd'hui qui implémentent l'arithmétique à virgule flottante, notamment les processeurs Intel, Motorola, Sun et MIPS.Lors du stockage de nombres, un nombre binaire correspondant peut représenter chaque nombre ou nombre fractionnel. Par exemple, la fraction 1/10e peut être représentée dans un système de numération décimal comme 0,1. Toutefois, ce même nombre converti au format binaire prend la forme du nombre décimal binaire répétitif suivant : 0001100110011100110011 (etc.) qui peut être répété à l'infini. Ce nombre ne peut pas être représenté dans un espace fini (limité). Par conséquent, il est arrondi d'environ -2.8E-17 lorsqu'il est stocké.Toutefois, la spécification IEEE 754 présente certaines limitations, que l'on peut classer en trois catégories générales :
Plus d'informationsLimites maximale/minimaleTous les ordinateurs ont une limite de nombre maximal et minimal qu'ils peuvent traiter. Étant donné que le nombre de bits de mémoire dans lesquels le nombre est stocké est fini, le nombre maximum ou minimum pouvant être stocké est également fini. Pour Excel, le nombre maximum pouvant être stocké est 1,79769313486232E+308 et le nombre positif minimum pouvant être stocké est 2,2250738585072E-308.Cas dans lesquels nous adhérons à la norme IEEE 754
Cas dans lesquels nous n'adhérons pas à la norme IEEE 754
PrécisionUn nombre à virgule flottante est stocké au format binaire en trois parties dans une plage de 65 bits : le signe, l'exposant et la mantisse.Réduire ce tableau
La mantisse et l'exposant peuvent tous deux être stockés en tant que composants séparés. Par conséquent, le degré de précision possible peut varier selon la taille du nombre (de la mantisse) à manipuler. Dans le cas d'Excel, bien qu'Excel puisse stocker des nombres de 1,79769313486232E308 à 2,2250738585072E-308, il ne peut le faire qu'avec une précision de 15 chiffres. Cette limitation est le résultat direct d'un strict respect de la spécification IEEE 754 et non une limitation d'Excel. Ce degré de précision est le même que celui trouvé dans d'autres tableurs. Les nombres à virgule flottante sont représentés sous la forme suivante, où exposant est l'exposant binaire : X = fraction * 2^(exposant - biais) fraction est la partie fractionnelle normalisée du nombre ; elle est normalisée car l'exposant est ajusté de sorte que le bit de début est toujours un 1. Il ne doit donc pas être stocké et vous disposez d'un bit de précision supplémentaire. C'est la raison pour laquelle il existe un bit « impliqué ». Ceci est similaire à la notation scientifique, dans laquelle vous manipulez l'exposant de façon à avoir un chiffre à gauche de la virgule, si ce n'est que dans le format binaire, vous pouvez toujours manipuler l'exposant de sorte que le premier bit soit un 1, parce que le nombre est composé uniquement de 1 et de 0.Le biais est la valeur de compensation utilisée pour éviter de stocker les exposants négatifs. Le biais des nombres à simple précision est 127 et celui des nombres à double précision est 1 023 (décimal). Excel stocke les nombres en utilisant la double précision. Exemple d'utilisation de très grands nombresEntrez le texte suivant dans un nouveau classeur :A1 : 1,2E+200 B1 : 1E+100 C1 : =A1+B1 Exemple d'utilisation de très petits nombresEntrez le texte suivant dans un nouveau classeur :A1 : 0.000123456789012345 B1 : 1 C1 : =A1+B1 Correction des erreurs de précisionExcel offre deux méthodes de base pour compenser les erreurs d'arrondi : la fonction ARRONDI et l'option de classeur Calcul avec la précision au format affiché ou Définir le calcul avec la précision au format affiché.Méthode 1 : La fonction ARRONDIL'exemple suivant, utilisant les données indiquées plus haut, utilise la fonction ARRONDI pour forcer un nombre à n'avoir que cinq chiffres. Ceci vous permet de comparer correctement le résultat à une autre valeur.A1 : 1,2E+200 B1 : 1E+100 C1 : =ARRONDI(A1+B1,5) obtient pour résultat 1,2E+200. D1 : =SI(C1=1,2E+200, VRAI, FAUX) obtient pour résultat la valeur VRAI. Méthode 2 : Calcul avec la précision au format affichéDans certains cas, vous serez peut-être en mesure d'utiliser l'option Calcul avec la précision au format affiché pour empêcher les erreurs d'arrondi d'affecter votre travail. Cette option force chaque nombre du classeur à prendre la valeur affichée. Pour activer cette option, procédez comme suit :
Nombres binaires répétitifs et calculs dont les résultats sont proches de zéroUn autre problème lié au stockage des nombres à virgule flottante au format binaire est que certains nombres, qui sont finis et non répétitifs en base décimale, deviennent des nombres infinis et répétitifs en base binaire. L'exemple le plus connu de ce problème est la valeur 0,1 et ses variantes. Bien que ces nombres puissent être représentés parfaitement en base décimale, le même nombre en format binaire devient le nombre binaire répétitif suivant lorsqu'il est stocké dans la mantisse :000110011001100110011 (etc.) La spécification IEEE 754 ne contient pas de disposition spéciale pour un nombre spécifique ; elle stocke ce qu'elle peut dans la mantisse et tronque le reste. Ceci résulte en une erreur d'environ -2,8E-17, ou 0,000000000000000028, lors du stockage.Même les fractions décimales courantes, telles que le nombre décimal 0,0001, ne peuvent pas être représentées exactement en format binaire. (0,0001 est une fraction répétitive binaire avec une période de 104 bits). Ceci est similaire à la raison pour laquelle la fraction 1/3 ne peut pas être représentée exactement en base décimale (nombre décimal répétitif 0,33333333333333333333). Ceci explique pourquoi le simple exemple suivant dans Microsoft Visual Basic pour Applications Exemple lors de l'ajout d'un nombre négatif
Exemple lorsqu'une valeur atteint zéro
Excel 97, toutefois, introduit une optimisation pour résoudre ce problème. Si une opération d'addition ou de soustraction résulte en une valeur égale à zéro ou très proche de zéro, Excel 97 et version ultérieure compense toute erreur due à la conversion d'un opérande à partir du format binaire ou vers le format binaire. L'exemple ci-dessus, dans Excel 97 et version ultérieure, affiche correctement 0 ou 0,000000000000000E+00 en notation scientifique. Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants de la Base de connaissances Microsoft. 172911
(http://support.microsoft.com/kb/172911/
)
Résultat incorrect atteignant 10 à une puissance très élevée/très petite214373 Pour plus d'informations sur les nombres à virgule flottante et la spécification IEEE 754, reportez-vous aux sites Web suivants :
(http://support.microsoft.com/kb/214373/
)
Résultat incorrect atteignant 10 à une puissance très élevée/petitehttp://www.ieee.org
(http://www.ieee.org)
http://stevehollasch.com/cgindex/coding/ieeefloat.html
(http://stevehollasch.com/cgindex/coding/ieeefloat.html)
Références Pour plus d'informations sur la façon de contourner ces erreurs, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft. 214118
(http://support.microsoft.com/kb/214118/
)
Comment faire pour corriger les erreurs d'arrondi dans l'arithmétique en virgule flottante
PropriétésNuméro d'article: 78113 - Dernière mise à jour: dimanche 18 septembre 2011 - Version: 2.0 Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. | Traductions disponibles
|


Retour au début








