Pourquoi mes valeurs de flotteur perdent-elles la précision et abandonnent-elles des décimales?Exemple de code ci-dessous
-
14-11-2019 - |
Question
Je n'ai jamais utilisé des flotteurs vraiment auparavant et le projet actuel que je travaille les nécessite.Je reçois des problèmes étranges que j'ai appris il y a environ des années, mais j'ai oublié pourquoi cela se produit.
Mes résultats après la multiplication ou l'ajout de flotteurs ne sont pas ce qu'ils sont censés être.
Voici mon code:
void main ()
{
//Example 1 - ERROR
float a=16937.6;
float b=112918;
float total=b+a;
cout<<total<<endl; //Outputs 129896 - rounds up and loses decimal (129855.6)
//Example 2 - Error
float c=247.82;
float d=9995.2;
float total2=c+d;
cout<<total2<<endl; //Outputs 10243 - loses all decimals (10243.02)
system ("pause");
}
La solution
Your problem isn't decimal precision - it's the format that is used to output the values.
Try:
cout << setiosflags(ios::fixed) << setprecision(2) << x;
Autres conseils
What Every Programmer Should Know About Floating-Point Arithmetic, or Why don’t my numbers add up?
In short, real numbers are infinite, computers aren't.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow