Formatierung von Zahlen, es klappt nicht so wie ich will :-(
-
Hallo,
ich möchte eine Zahl mit voranstehenden Nullen auffüllen und 2 Nachkommastellen haben ... hier mal der Code:
// function for convert double to string public: const string Double2str(double d, int prec) { stringstream ss; //ss.precision(prec); ss << ("%03f.2", d); return ss.str(); }Leider funzt das nicht

Kann mir jemand sagen was falsch ist?
MfG,
du ciel
-
der code hat denselben effekt wie
// function for convert double to string public: const string Double2str(double d, int prec) { stringstream ss; //ss.precision(prec); ss << d; return ss.str(); }du solltest dich mal über den normalen effekt des komma operators informieren und dich mit io manipulatoren (zwecks genauigkeit festlegen) beschäftigen
-
Die C++ IO-Streams arbeiten nicht mehr mit den printf-Parametern!
string Double2str(double d, int prec) // const ist überflüssig { stringstream ss; ss.precision(prec); ss.fill('0'); ss << d; return ss.str(); }Alternativ kannst du auch die Manipulatoren benutzen:
#include <iomanip> ss << setprecision(prec) << setfill('0') << d;
-
hmm, hab schon ne ganze weile gesucht und herumprobiert ... die manipulation-flags sind ja nicht das problem, die gehen bei meinen standardbeispielen auch nur leider eben nicht hier direkt in meinem stream.
wenn du weißt wie ich es bei meinem bsp. problemlos implementiere wäre ich sehr dankbar.
du ciel
-
Evtl fehlt noch die Größenangabe:
ss << setw(6) << ... ; // z.B. 6, weil das die Mindest-Gesamtgröße istAnsonsten schreib, was du gerne hättest und was bei deinen Versuchen rauskommt!
-
du ciel schrieb:
...
... ss << ("%03f.2", d); ...Wie kommst Du eigentlich darauf, dass das so funktionieren könnte ?

Du erwartest Doch auch nicht, dass das klappt:
printf << "Hello world\n";, oder ?

Gruß,
Simon2.
-
Simon2 schrieb:
du ciel schrieb:
...
... ss << ("%03f.2", d); ...Wie kommst Du eigentlich darauf, dass das so funktionieren könnte ?

Och, so abwegig finde ich das gar nicht … vor allem wenn man sich die Boost.Format-Bibliothek anschaut, in der der %-Operator entsprechend überladen worden ist. Das hat schon gewisse Ähnlichkeiten.