Comment imprimer des nombres avec des décimales spécifiées en C++
Cet article présente la façon d’imprimer les nombres avec des décimales spécifiées en C++.
Utilisez les méthodes std::fixed
et std::setprecision
pour spécifier la précision
Cette méthode utilise des manipulateurs d’E/S de la bibliothèque standard définie dans l’en-tête <iomanip>
(voir la liste complète). Ces fonctions peuvent modifier les données du flux et sont principalement utilisées pour les opérations de formatage des E/S. Dans le premier exemple, nous utilisons uniquement la méthode fixed
, qui modifie le formatage par défaut de sorte que les valeurs en virgule float sont écrites en notation à virgule fixe. Notez, cependant, que le résultat a toujours une précision prédéfinie de 6 points.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << d << endl;
}
return EXIT_SUCCESS;
}
Production:
123.231000
2.234300
0.324000
10.222424
6.349109
110.123294
92.001112
0.000000
On peut aussi fixer les points décimaux après la virgule et spécifier la valeur de la précision simultanément. Dans l’exemple de code suivant, la fonction fixed
est appelée avec setprecision
, qui elle-même prend la valeur int
comme paramètre.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setprecision;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
Production:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
L’exemple de code précédent résout le problème initial, mais la sortie semble assez mitigée, et elle n’est guère dans un format lisible. Nous pouvons utiliser les fonctions std::setw
et std::setfill
pour afficher des valeurs floats dans un vecteur donné aligné sur la même position de la virgule. Pour y parvenir, nous devrions appeler la fonction setw
pour indiquer à la cout
la longueur maximale de chaque sortie (nous en choisissons 8 dans ce cas). Ensuite, la fonction setfill
est appelée pour spécifier un char
qui remplira les places de remplissage. Enfin, nous ajoutons les méthodes utilisées précédemment (fixed
et setprecision
) et la sortie à la console.
#include <iomanip>
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::fixed;
using std::setfill;
using std::setprecision;
using std::setw;
using std::vector;
int main() {
vector<double> d_vec = {123.231, 2.2343, 0.324,
10.222424, 6.3491092019, 110.12329403024,
92.001112, 0.000000124};
for (auto &d : d_vec) {
cout << setw(8) << setfill(' ') << fixed << setprecision(3) << d << endl;
}
return EXIT_SUCCESS;
}
Production:
123.231
2.234
0.324
10.222
6.349
110.123
92.001
0.000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookArticle connexe - C++ Float
- Arrondir le nombre à virgule flottante à 2 décimales en C++
- Définir la précision des nombres à virgule flottante en C++
- Comment convertir Float en Int en C++
- Comment générer un nombre aléatoire entre 0 et 1 en C++
- Comment convertir un float en chaîne de caractères en C++
- Comment générer un nombre float aléatoire en C++