Arrondir le nombre à virgule flottante à 2 décimales en C++
-
Utilisez les spécificateurs de format de fonction
printf
pour arrondir le nombre à virgule flottante à 2 décimales en C++ -
Utilisez les spécificateurs de format de fonction
fprintf
pour arrondir le nombre à virgule flottante à 2 décimales en C++ -
Utilisez
std::setprecision
etstd::fixed
pour arrondir le nombre à virgule flottante à 2 décimales en C++
Cet article explique plusieurs méthodes pour arrondir les nombres à virgule flottante à 2 décimales en C++.
Utilisez les spécificateurs de format de fonction printf
pour arrondir le nombre à virgule flottante à 2 décimales en C++
Les nombres à virgule flottante ont une représentation binaire spéciale, ce qui implique que les nombres réels ne peuvent pas être représentés exactement par les machines. Ainsi, il est courant de recourir à des fonctions d’arrondi lors de l’utilisation des nombres à virgule flottante et des calculs sur ceux-ci. Dans ce cas, cependant, nous n’avons besoin de sortir qu’une certaine partie de la partie fractionnaire des nombres.
La première solution est d’utiliser la fonction printf
pour sortir du texte formaté dans le flux stdout
. Notez que le spécificateur de format normal pour les nombres float
- %f
doit être modifié en %.2f
. Cette dernière notation garantit que seulement 2 décimales sont imprimées à partir du nombre, et en même temps, elle effectue l’arrondi selon les règles mathématiques courantes. Notez que, une notation similaire peut être utilisée avec les spécificateurs de format d’autres types de données.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};
for (auto &item : floats) {
printf("%.2f; ", item);
}
return EXIT_SUCCESS;
}
Production:
-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
Utilisez les spécificateurs de format de fonction fprintf
pour arrondir le nombre à virgule flottante à 2 décimales en C++
fprintf
est une autre fonction qui peut être utilisée pour faire le formatage de sortie comme l’appel printf
et en plus, elle peut écrire dans n’importe quel objet de flux FILE*
qui peut être passé comme premier argument. Dans l’exemple suivant, nous montrons l’impression dans le flux stderr
, une version sans tampon de stdout
pour les rapports d’erreurs et la journalisation.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int main() {
vector<double> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};
for (auto &item : floats) {
fprintf(stderr, "%.2f; ", item);
}
return EXIT_SUCCESS;
}
Production:
-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
Utilisez std::setprecision
et std::fixed
pour arrondir le nombre à virgule flottante à 2 décimales en C++
Alternativement, on peut utiliser la fonction std::setprecision
de la bibliothèque des manipulateurs d’E/S en conjonction avec std::fixed
. Ce dernier est utilisé pour modifier le formatage par défaut des opérations d’entrée/sortie en virgule flottante. Si nous l’utilisons avec std::setprecision
, le résultat est une précision fixe des nombres réels, et la précision peut être spécifiée avec l’argument entier passé à std::setprecision
lui-même.
#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> floats{-3.512312, -21.1123, -1.99, 0.129, 2.5, 3.111};
for (auto &item : floats) {
cout << setprecision(2) << fixed << item << "; ";
}
return EXIT_SUCCESS;
}
Production:
-3.51; -21.11; -1.99; 0.13; 2.50; 3.11;
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 Facebook