Utilisation correcte de std :: cout.precision () - ne pas imprimer les zéros de fin
Je vois beaucoup de questions sur la précision de nombre de nombres à virgule flottante, mais plus précisément, je veux savoir pourquoi ce code
#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;
}
montre 0.5
? Je m'attends à voir 0.5000
.
C'est à cause de l'origine des types de données entier?
source d'informationauteur mahmood
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer
std::fixed
manipulateurcout
afin de montrer des zéros à la fin.std::cout.precision(4);
raconte l' nombre maximum de chiffres pas le minimum.que signifie, par exemple, si vous utilisez
Si vous souhaitez obtenir
n
chiffres à toutes les fois que vous auriez à utiliserstd::fixed
.Le comportement est correct. L'argument spécifie le nombre maximum montant significatif de chiffres. Ce n'est pas un minimum. Si uniquement des zéros suivre, ils ne sont pas imprimés en raison des zéros à la fin de la partie décimale ne sont pas significatives. Si vous voulez les zéros imprimé, alors vous avez besoin de définir des indicateurs appropriés:
Ceci définit la notation "fixe", qui imprime tous les chiffres.