Maison >développement back-end >C++ >Pourquoi `std::cout.precision()` n'affiche-t-il pas les zéros de fin pour les nombres à virgule flottante ?
std::cout.precision() et les zéros de fin
Comprendre l'utilisation correcte de std::cout.precision() est crucial lors de l'affichage de nombres à virgule flottante. Dans cet article, nous examinerons un exemple spécifique pour résoudre un comportement inattendu.
Code initial et problème
Considérez le code suivant qui tente d'afficher le résultat de en divisant deux entiers sous forme de nombre à virgule flottante :
#include <iostream> #include <stdlib.h> int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Ce code devrait afficher 0,5000, mais à la place, il imprime 0,5. Cet écart est dû au fait que les types de données d'origine sont des entiers.
Résolution : std::fixed Manipulateur
Pour afficher les zéros à droite pour les nombres à virgule flottante, vous devez passer le manipulateur std::fixed à std::cout. Ce manipulateur garantit que la représentation décimale utilise la notation à virgule fixe, en préservant les zéros à droite.
#include <iostream> #include <stdlib.h> #include <iomanip> int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout << std::setprecision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Avec le manipulateur std::fixed, le code imprime désormais correctement 0,5000. Le manipulateur std::setprecision() reste chargé de spécifier le nombre de décimales souhaité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!