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 ?

Pourquoi `std::cout.precision()` n'affiche-t-il pas les zéros de fin pour les nombres à virgule flottante ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 21:14:01574parcourir

Why Does  `std::cout.precision()` Not Display Trailing Zeros for Floating-Point Numbers?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn