float precision angeben



  • Hallo miteinader,
    ich habe eine float Variable und möchte diese mit einer Genauigkeit von von 5 Nachkommastellen in einen string schieben. Mein Quelltext sieht bisher wie folgt aus:

    string s;
    stringstream sstr;
    sstr.precision(5);
    sstr << v.xPos;
    s.append(sstr.str());
    

    Leider funktioniert das nicht, gerade bei der 0 wird einfach nur die 0 eingetragen, statt 0.00000.

    Was mache ich da falsch?


  • Mod

    Deine 0 ist eben auf 5 Stellen genau 0 😃 . Aber guck mal hier:
    http://www.cplusplus.com/reference/iostream/manipulators/fixed/



  • seux schrieb:

    Leider funktioniert das nicht, gerade bei der 0 wird einfach nur die 0 eingetragen, statt 0.00000.

    precision setzt im normalfall die maximale Genauigkeit. Und 0.0000 ist mit "0" genau genug angegeben, da helfen auch Nachkommastellen nicht.
    Bei dir fehlt noch fixed:

    string s;
    stringstream sstr;
    sstr << fixed << setprecision(5) << v.xPos;
    s.append(sstr.str());
    


  • Danke, hat super hingehauen 🙂



  • Ohne das "fixed" regelst Du über setprecision auch nicht die Nachkommastellen sondern die Zahl der Dezimalstellen insgesamt, die maximal verwendet werden sollen. Also: 12.345678 mit 3 Stellen sind eben "12.3".


Log in to reply