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
Libérer: 2024-11-08 21:14:01
original
577 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal