Sembrano essere 5 domande anziché una.Comunque:
std::fixed
viene utilizzato per indicare che si desidera avere sempre un formato a virgola fissa anziché utilizzare la notazione scientifica laddove questa notazione è più appropriata.Quando sono necessarie molte cifre per rappresentare ragionevolmente il valore, il formato cambierà utilizzox.yyyyyyEee
(potete chiedere di utilizzare sempre il formato scientifico utilizzandostd::scientific
).std::setw()
non importa quale valore è formattato!Quando un valore è formattato e c'è un positivoout.width()
impostato, l'output verrà riempito conout.fill()
carattere per essere almenoout.width()
caratteri larghi.Se l'output è maggiore diout.width()
in ogni caso non si verificherà alcuna imbottitura.Dopo ogni operazione di output [che richiedeout.width()
in considerazione] ilout.width()
viene reimpostato su0
(tutte le altre opzioni di formattazione non vengono ripristinate automaticamente).- Qualsiasi carattere conta ai fini della larghezza, inclusi il segno, i separatori delle migliaia, i punti decimali, ecc.Il punto decimale non conta ai fini della precisione:
out.precision()
è il numero di cifre frazionarie (perstd::fixed
formattazione) o il numero di cifre non esponenti (perstd::scientific
formattazione). - La larghezza indica quanti caratteri verranno riempiti dall'output, la precisione specifica quante cifre [frazionarie] devono essere prodotte.
- I valori binari in virgola mobile possono rappresentare pochissime cifre decimali (ad es
float
normalmente sono le 6;puoi scoprire quante cifre possono essere utilizzate in sicurezza utilizzandostd::numeric_limits<float>::digits10
).Cercare di utilizzare più cifre probabilmente darà come risultato un output inaspettato durante l'elaborazione di valori decimali (durante l'elaborazione di valori binari potresti essere interessato fino astd:numeric_limits<float>::digits
luoghi).Potresti voler dare un'occhiata Ciò che ogni informatico dovrebbe sapere sull'aritmetica in virgola mobile.