Cela semble être 5 questions plutôt qu'une seule. De toute façon:
std::fixed
est utilisé pour indiquer que vous voulez toujours avoir un format de point fixe plutôt que d'utiliser une notation scientifique où cette notation est plus appropriée. Lorsqu'il y a de nombreux chiffres nécessaires pour représenter raisonnablement la valeur, le format changera d'utilisationx.yyyyyyEee
(Vous pouvez demander à toujours utiliser le format scientifique en utilisantstd::scientific
).std::setw()
Ne se soucie pas de la valeur formatée! Lorsqu'une valeur est formatée et qu'il y a un positifout.width()
Ensemble, la sortie sera rembourrée avecout.fill()
caractère pour être au moinsout.width()
personnages larges. Si la sortie est plus grande queout.width()
Quoi qu'il en soit, aucun rembourrage ne se produira. Après chaque opération de sortie [qui prendout.width()
en compte] leout.width()
est réinitialisé avec0
(Toutes les autres options de formatage ne sont pas réinitialisées automatiquement).- Tout caractère compte pour la largeur, y compris le signe, des milliers de séparateurs, des points décimaux, etc. Le point décimal ne compte pas pour la précision:
out.precision()
est le nombre de chiffres fractionnaires (pourstd::fixed
formatage) ou le nombre de chiffres non exposants (pourstd::scientific
mise en page). - La largeur est le nombre de caractères remplis par la sortie, la précision spécifie le nombre de chiffres [fractionnaires] à produire.
- Les valeurs de points flottants binaires peuvent représenter très peu de chiffres décimaux (pour
float
c'est normalement 6; Vous pouvez découvrir combien de chiffres peuvent être utilisés en toute sécurité en utilisantstd::numeric_limits<float>::digits10
). Essayer d'utiliser plus de chiffres que cela entraînera probablement une sortie inattendue lors du traitement des valeurs décimales (lors du traitement des valeurs binairesstd:numeric_limits<float>::digits
des endroits). Vous voudrez peut-être jeter un œil Ce que chaque informaticien doit savoir sur l'arithmétique à virgule flottante.