Numeri reali

galleggiante r = 5.0
Il valore 5.0 è un numero rappresentato come frazione decimale (ha un numero intero e una parte frazionaria). In informatica, tali numeri sono chiamati numeri reali.
 
Un numero reale è un numero che ha una parte intera e una parte frazionaria. Le parti intere e frazionarie sono separate l'una dall'altra da un punto, non da una virgola come in matematica.

Anche se la parte frazionaria del numero è uguale a zero, come nella variabile r nell'esempio, il compilatore creerà comunque una variabile reale in memoria. Il punto, per così dire, un segnale per il traduttore che è necessario creare una variabile reale. 

I numeri molto grandi e molto piccoli  vengono scritti utilizzando la "virgola mobile" (nel cosiddetto formato scientifico).  
In formato scientifico, un numero è rappresentato come mantissa(parte significativa del numero) ed esponente. Quando vengono scritti, la mantissa e l'esponente sono separati l'uno dall'altro dalla lettera e (che denota 10 in una certa misura). 
Ad esempio, puoi memorizzare il valore della carica di un elettrone in una variabile 
\(1,60217662 \times 10^{-19}\) Kl), scritto come  
floatEl= 1.60217662e-19
   // per un ordine positivo, il segno + può essere omesso

Quasi tutti i numeri reali non possono essere memorizzati nella memoria del computer con perfetta precisione, poiché per la loro memorizzazione viene allocato un numero limitato di bit. Pertanto, quando si calcola con numeri reali, si accumulano errori associati all'imprecisione della rappresentazione. Inoltre, minore è lo spazio allocato, maggiore sarà questo errore. Per ridurre l'errore in C++, viene utilizzato il tipo double, che memorizza un numero reale con doppia precisione in memoria (occupa otto byte in memoria, mentre il tipo float - 4 byte).

Invio

Puoi inserire diverse variabili reali dal flusso di input e scriverle in variabili nel modo standard: galleggiante x, y; cin>> x>> y; Il primo numero va nella variabile x, il secondo - in y.



Conclusione

Quando si visualizzano numeri reali, per impostazione predefinita vengono visualizzate 6 posizioni decimali, con il formato scientifico o il punto fisso selezionato automaticamente.
Il formato di output può essere personalizzato. Per questo, viene utilizzata una libreria iomanip aggiuntiva, manipolatori che controllano l'output.
Per l'output in formato a virgola fissa, viene utilizzato il manipolatore  fixed, per il formato scientifico - scientific. Poi devi determinare il numero di cifre nella parte frazionaria usando il manipolatore  setprecision(). Usando il manipolatore setw(), puoi impostare il numero totale di posizioni assegnate per l'output del numero.

 
Esempio
float x = 1.0/6; cout << corretto << impostaprecisione(9); // imposta per visualizzare 9 cifre nella parte frazionaria cout << setw(12) << X;
Lo schermo visualizzerà
_0.166666672

Tutti i comandi possono essere scritti in una riga:
cout << corretto << impostaprecisione(9) << setw(12) << x;

Operazioni con numeri reali. modulo cmath

Quando lavoriamo con numeri reali, possiamo usare il già familiare modulo math, che contiene un gran numero di funzioni incorporate. 
Quando si risolvono problemi, è spesso necessario arrotondare i numeri reali ai valori interi più vicini. Ci sono due funzioni per questo.

Devi ricordare!
1. con conversione di tipo esplicita ( float x=1.5; int y = int(x))  -  la parte frazionaria di un numero reale è tagliata (y = 1); 
2. funzione floor(x) -  restituisce il numero intero più grande minore o uguale a x (arrotondato per difetto);
3. funzione ceil(x) -  restituisce il numero intero più piccolo maggiore o uguale a x (arrotondato per eccesso).

Ecco le funzioni più utili contenute nel modulo cmath.
Funzione Descrizione
Arrotondamento
arrotonda(x)
C++11
Arrotonda un numero all'intero più vicino. Se la parte frazionaria del numero è 0,5, il numero viene arrotondato al numero intero più vicino. 
trunc(x)
C++11
Scarta la parte frazionaria
piano(x) Arrotonda un numero per difetto ("floor"), quindi floor(1.5) == 1floor(-1.5) ==  ; -2
ceil(x) Arrotonda un numero per eccesso ("tetto"), mentre ceil(1.5) == 2ceil(-1.5) ==  ; -1
abs(x) Modulo (valore assoluto).
fabs(x) Modulo numero reale
Radici, logaritmi
sqrt(x) Radice quadrata. Utilizzo: y = sqrt(x)
pow(x, y) Eleva x alla y. \(x^y\)
log(x) Logaritmo naturale. 
exp(x) La base dei logaritmi naturali e = 2.71828...
Trigonometria
sin(x) Seno di un angolo specificato in radianti
cos(x) Coseno di un angolo specificato in radianti
tan(x) La tangente di un angolo specificato in radianti
asin(x) Arcoseno, restituisce il valore in radianti
acos(x) Arco coseno, restituisce il valore in radianti
atan(x) Arctangent, restituisce il valore in radianti
atan2(y, x) Angolo polare (in radianti) del punto (x, y).