Voici ce que je pense:Pourquoi la précision par défaut de cout n'affecte pas le résultat évalué?
#include <iostream>
#include <iomanip>
int main()
{
double x = 10-9.99;
std::cout << x << std::endl;
std::cout << std::setprecision (16);
std::cout << x;
return 0;
}
Le programme imprime au-dessus de 0,01 en évaluant x avant SetPrecision() et un long nombre qui est pas exactement égal à 0,01, pour x après SetPrecision() .cout a la précision par défaut de 16 lors de l'impression de nombres à virgule flottante dans ma machine. Si la précision est de 16, la valeur ci-dessus devrait être quelque chose comme 0.0100000000000000 mais il reste 0.01 mais quand je prends la valeur (16), le programme imprime un nombre long contenant 16 chiffres. Donc ma question est, pourquoi cout n'imprime pas tous les chiffres selon les types de précision par défaut. Pourquoi avons-nous besoin de forcer cout (en utilisant setprecision()) pour imprimer tous les chiffres? Pourquoi cout n'imprime pas tous les chiffres en fonction de la précision par défaut des types.
Utilisez 'setw' pour définir le nombre de chiffres que vous voulez afficher –
* cout a une précision par défaut de 16 lors de l'impression de nombres à virgule flottante sur ma machine. * Qu'est-ce qui vous fait penser cela? –
@R Sahu Je pense que la précision par défaut de cout lors de l'impression double, peut être 15, 16 ou 17. Il est spécifique au compilateur. –