Comment formatez-vous un flottant en C++ pour sortir en deux décimales arrondies? Je n'ai pas de chance avec setw
et setprecision
car mon compilateur me dit juste que c'est not defined
.
cout << "Total : " << setw(2) << total << endl;
sorties totales: Total : 12.3961
J'aimerais que ce soit: 12.40
Ou 12.39
Si c'est trop de travail à arrondir.
Vous devez inclure <iomanip>
et fournir une étendue d'espace de noms à setw and setprecision
#include <iomanip>
std::setw(2)
std::setprecision(5)
essayer:
cout.precision(5);
cout << "Total : " << setw(4) << floor(total*100)/100 << endl;
ou
cout << "Total : " << setw(4) << ceil(total*10)/10 << endl;
iostream fournit une fonction de précision, mais pour utiliser setw, vous devrez peut-être inclure un fichier d'en-tête supplémentaire.
Utilisez cout << fixed
Ou cout.setf(ios::fixed)
et std::cout.precision(<# of decimal digits>)
comme ci-dessous (en utilisant le compilateur Clang-503.0.40 inclus avec OSX Mavericks):
#include <iostream>
int main()
{
using namespace std;
float loge = 2.718;
double fake = 1234567.818;
cout << fixed;
cout.precision(2);
cout << "loge(2) = " << loge << endl;
cout << "fake(2) = " << fake << endl;
cout.precision(3);
cout << "loge(3) = " << loge << endl;
cout << "fake(3) = " << fake << endl;
}
La sortie de ceci est (notez l'arrondi):
loge(2) = 2.72
fake(2) = 1234567.82
loge(3) = 2.718
fake(3) = 1234567.818
Ceci est la version simple. Au lieu d'utiliser cout << fixed;
, Vous pouvez utiliser cout.setf(ios::fixed);
(pour afficher la notation scientifique, remplacez fixe par scientifique; les deux définiront le nombre de chiffres à droite du séparateur décimal). Notez que cout.precision () est également utilisé pour définir le nombre de chiffres affichés au total de chaque côté du séparateur décimal si les indicateurs de format n'incluent pas fixe ou scientifique . Il existe des didacticiels à ce sujet sur Internet.
Pour inclure également le zéro de fin, il ne suffit pas de définir la précision. Vous devez également modifier le format à virgule flottante en format fixe , qui utilise le nombre de chiffres indiqué par setprecision
comme nombre de chiffres après le point décimal :
std::cout << std::fixed << std::setprecision(2) << v;
Si vous souhaitez arrondir le zéro de fin, vous pouvez utiliser la fonction C printf
.
#include <iostream>
#include <cstdio>
int main() {
float v = 12.3961;
std::printf("%.2f",v); //prints 12.40
}
Par rapport à:
#include <iostream>
#include <iomanip>
int main() {
float v = 12.3961;
std::cout << std::setprecision(4) << v; //prints 12.4
}