Maison >développement back-end >C++ >Pourquoi l'arithmétique double précision affiche-t-elle parfois plus de 15 décimales de précision ?

Pourquoi l'arithmétique double précision affiche-t-elle parfois plus de 15 décimales de précision ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 19:49:14731parcourir

Why Does Double-Precision Arithmetic Sometimes Show More Than 15 Decimal Places of Precision?

Double précision : comprendre la précision étendue

Lorsque vous travaillez avec des types de données à double précision, il est généralement entendu que la précision approximative est limitée à 15 décimales. Cependant, certains types de nombres, tels que 1.0/7.0, peuvent afficher une précision de 17 décimales lorsqu'ils sont stockés en interne sous forme de double.

Cette anomalie est attribuable à la conception inhérente de la représentation des données doubles IEEE. Les valeurs double précision comportent 53 bits significatifs, fournissant une précision d'environ 15,95 chiffres décimaux. Cependant, la bibliothèque C arrondit cette valeur à 15, ce qui donne une précision théorique de 15 décimales. En réalité, la valeur de DBL_DIG est fixée à 15 au lieu de 16 en raison de cet arrondi.

La signification de cette précision étendue est élaborée davantage à l'aide de la fonction nextafter(). Cette fonction calcule le nombre représentable le plus proche d'une valeur donnée. Lors de l'examen de la valeur de 1,0/7,0 à l'aide de cette fonction, la sortie révèle trois valeurs consécutives avec des derniers chiffres différents : 0,14285714285714282, 0,14285714285714285 et 0,14285714285714288.

La valeur précise du dernier chiffre affiché est déterminée par le opération d'arrondi effectuée par le compilateur. Dans ce cas, le chiffre change de 3 à chaque pas, indiquant que la précision est d'environ 16 chiffres décimaux. Ainsi, alors que la précision théorique d'un double est de 15 décimales, la précision étendue de près de 16 chiffres permet une plus grande précision pour certains types de calculs.

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