#include<iostream>usingnamespace std;int main (){double f =3.14159;
cout.setf(ios::fixed,ios::floatfield);
cout.precision(3);
cout << f << endl;return0;}
Ce imprime 3.142
Merci. Cela a été utile pour moi. Cela fonctionne pour 3.14159 mais il ne fonctionne pas pour 13.14159. Votre solution ne fonctionne que pour les nombres inférieurs à 10. Vous avez raison, mon post n'y est pas, mais le dernier (celui que j'ai édité 11 minutes ago) fonctionne correctement. J'ai vérifié avec 2 et 3 chiffres avant la virgule, et il imprime en 3 chiffres comme prévu. ok! 🙂
Vous pouvez obtenir nombre fixe de décimales à afficher (et beaucoup d'autres choses) à l'aide de la iomanip en-tête. Par exemple:
#include<iostream>#include<iomanip>int main(){double pi =3.141592653589;
std::cout << std::fixed << std::setprecision(2)<< pi <<'\n';return0;}
sera de sortie:
3.14
Noter que les deux fixed et setprecision modifier le flux de façon permanente, si vous voulez localiser les effets, vous pouvez enregistrer les informations à l'avance et de les restaurer par la suite:
#include<iostream>#include<iomanip>int main(){double pi =3.141592653589;
std::cout << pi <<'\n';//Save flags/precision.
std::ios_base::fmtflags oldflags = std::cout.flags();
std::streamsize oldprecision = std::cout.precision();
std::cout << std::fixed << std::setprecision(2)<< pi <<'\n';
std::cout << pi <<'\n';//Restore flags/precision.
std::cout.flags (oldflags);
std::cout.precision (oldprecision);
std::cout << pi <<'\n';return0;}
La sortie de ce qui est:
3.141593.143.143.14159
Merci pour montrer comment sauvegarder et restaurer les paramètres de flux, très utile. l'utilisation de cette ligne " using namespace std; "pour plus de nettoyer le code il existe des arguments pour et contre ce qui sont suffisamment complexes pour qu'ils ne rentrent pas à l'intérieur d'une zone de commentaire 🙂 moi je préfère des espaces de noms explicites pour tous, mais le plus simple des programmes ou, au minimum, à l'aide des éléments spécifiques dans un espace de noms plutôt que de l'importation de l'ensemble du lot. Cependant, cette discussion est tangent à la question et ma réponse.
Si vous souhaitez imprimer des nombres avec une précision de 3 chiffres après la virgule, il suffit d'ajouter la chose suivante, avant l'impression, le nombre cout << std::setprecision(3) << desired_number. N'oubliez pas d'ajouter #include <iomanip> dans votre code.
Utilisation
setf
etprécision
.Ce imprime
3.142
Cela fonctionne pour 3.14159 mais il ne fonctionne pas pour 13.14159. Votre solution ne fonctionne que pour les nombres inférieurs à 10.
Vous avez raison, mon post n'y est pas, mais le dernier (celui que j'ai édité 11 minutes ago) fonctionne correctement. J'ai vérifié avec 2 et 3 chiffres avant la virgule, et il imprime en 3 chiffres comme prévu.
ok! 🙂
OriginalL'auteur dasblinkenlight
Celui-ci ne se montrent "13.141"
OriginalL'auteur mask8
Vous pouvez obtenir nombre fixe de décimales à afficher (et beaucoup d'autres choses) à l'aide de la
iomanip
en-tête. Par exemple:sera de sortie:
Noter que les deux
fixed
etsetprecision
modifier le flux de façon permanente, si vous voulez localiser les effets, vous pouvez enregistrer les informations à l'avance et de les restaurer par la suite:La sortie de ce qui est:
l'utilisation de cette ligne " using namespace std; "pour plus de nettoyer le code
il existe des arguments pour et contre ce qui sont suffisamment complexes pour qu'ils ne rentrent pas à l'intérieur d'une zone de commentaire 🙂 moi je préfère des espaces de noms explicites pour tous, mais le plus simple des programmes ou, au minimum, à l'aide des éléments spécifiques dans un espace de noms plutôt que de l'importation de l'ensemble du lot. Cependant, cette discussion est tangent à la question et ma réponse.
OriginalL'auteur paxdiablo
Si vous souhaitez imprimer des nombres avec une précision de 3 chiffres après la virgule, il suffit d'ajouter la chose suivante, avant l'impression, le nombre
cout << std::setprecision(3) << desired_number
. N'oubliez pas d'ajouter#include <iomanip>
dans votre code.OriginalL'auteur Unit Patel