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?
-
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".