Libreria IOS C ++ - Precisione

Descrizione

La precisione in virgola mobile determina il numero massimo di cifre da scrivere nelle operazioni di inserimento per esprimere valori in virgola mobile. Il modo in cui questo viene interpretato dipende dal fatto che il flag del formato floatfield sia impostato su una notazione specifica (fissa o scientifica) o non sia impostato (utilizzando la notazione predefinita, che non è necessariamente equivalente a fixed né scientific).

Per la lingua predefinita:

  • Utilizzando la notazione a virgola mobile predefinita, il campo di precisione specifica il numero massimo di cifre significative da visualizzare in totale contando sia quelle prima che quelle dopo il punto decimale. Si noti che non è un minimo e quindi non riempie il numero visualizzato con zeri finali se il numero può essere visualizzato con meno cifre rispetto alla precisione.
  • Sia nella notazione fissa che in quella scientifica, il campo della precisione specifica esattamente quante cifre visualizzare dopo il punto decimale, anche se questo include gli zeri decimali finali. Le cifre prima del punto decimale non sono rilevanti per la precisione in questo caso.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione ios_base :: precision.

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

La prima forma (1) restituisce il valore del campo di precisione in virgola mobile corrente per il flusso.

Anche la seconda forma (2) lo imposta su un nuovo valore.

Parametri

prec - Nuovo valore per la precisione in virgola mobile.

Valore di ritorno

La precisione selezionata nel flusso prima della chiamata.

Eccezioni

Basic guarantee - se viene generata un'eccezione, il flusso è in uno stato valido.

Gare di dati

Accede a (1) o modifica (2) l'oggetto stream. L'accesso simultaneo allo stesso oggetto flusso può causare gare di dati.

Esempio

Nell'esempio seguente viene illustrata la funzione 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;
}

Compiliamo ed eseguiamo il programma sopra, questo produrrà il seguente risultato:

3.1416
3.14159
3.141590000