Pourquoi mes valeurs de flotteur perdent-elles la précision et abandonnent-elles des décimales?Exemple de code ci-dessous

StackOverflow https://stackoverflow.com/questions/9506801

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");

}

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top