Bibliothèque C ++ IOS - Précision

La description

La précision en virgule flottante détermine le nombre maximal de chiffres à écrire lors des opérations d'insertion pour exprimer des valeurs à virgule flottante. La façon dont cela est interprété dépend du fait que l'indicateur de format floatfield est défini sur une notation spécifique (fixe ou scientifique) ou s'il n'est pas défini (en utilisant la notation par défaut, qui n'est pas nécessairement équivalente à fixe ou scientifique).

Pour les paramètres régionaux par défaut -

  • En utilisant la notation à virgule flottante par défaut, le champ de précision spécifie le nombre maximal de chiffres significatifs à afficher dans le comptage total à la fois avant et après la virgule décimale. Notez qu'il ne s'agit pas d'un minimum, et par conséquent, il ne remplit pas le nombre affiché avec des zéros de fin si le nombre peut être affiché avec moins de chiffres que la précision.
  • Dans les notations fixes et scientifiques, le champ de précision spécifie exactement le nombre de chiffres à afficher après la virgule décimale, même si cela inclut les zéros décimaux de fin. Les chiffres avant la virgule décimale ne sont pas pertinents pour la précision dans ce cas.

Déclaration

Voici la déclaration de la fonction ios_base :: precision.

get (1)	streamsize precision() const;
set (2)	streamsize precision (streamsize prec);

Le premier formulaire (1) renvoie la valeur du champ de précision à virgule flottante actuel pour le flux.

La deuxième forme (2) lui attribue également une nouvelle valeur.

Paramètres

prec - Nouvelle valeur pour la précision en virgule flottante.

Valeur de retour

Précision sélectionnée dans le flux avant l'appel.

Exceptions

Basic guarantee - si une exception est levée, le flux est dans un état valide.

Courses de données

Accède (1) ou modifie (2) l'objet de flux. L'accès simultané au même objet de flux peut provoquer des courses de données.

Exemple

L'exemple ci-dessous explique la fonction ios_base :: precision.

#include <iostream>     

int main () {
   double f = 3.14159;
   std::cout.unsetf ( std::ios::floatfield );                
   std::cout.precision(5);
   std::cout << f << '\n';
   std::cout.precision(10);
   std::cout << f << '\n';
   std::cout.setf( std::ios::fixed, std:: ios::floatfield ); 
   std::cout << f << '\n';
   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

3.1416
3.14159
3.141590000