Double in CString nach XX.XX formatieren
-
Hallo!
Ich hab jetzt schon den fast den gesammten Vormittag damit verbracht und bekomme einfach nicht gebacken!double Val = 9.0; CString strVal; strVal.Format("%4.2f", Val);
Ist das Einzigste was annähernd das bringt was ich möchte:
9.00
Leider brauche ich aber dieses Format:
09.00Wie muss ich das "formatieren"?
Wenn's keine elegante Lösung gibt, muss ich halt prüfen, ob der Wert kleiner als 10 ist und dann eine "0" davorsetzen.
-
das ist die eleganteste vermute ich
oder er gibt irgendeine funktion die wir beide nicht kennen.
-
Ich hab's etz so gelöst:
double Val = 9.0; CString strVal; if(Val < 10) strVal.Format("0%f", Val); else strVal.Format("%f", Val);
-
Was spricht gegen:
strVal.Format("%05.2f", Val);
0 heißt: Vorne mit Nullen auffüllen
5 heißt: 5 Zeichen insgesamt, also INCL. Dezimaltrennzeichen
und die 2 sind ja die Nachkommastellen
-
sorry, mit format() mache ich nie was
mache immer atoi() und _itoa()
glaube ich sollte mir die funktion doch langsahm mal anschauen ^^
-
estartu_de schrieb:
Was spricht gegen:
strVal.Format("%05.2f", Val);
0 heißt: Vorne mit Nullen auffüllen
5 heißt: 5 Zeichen insgesamt, also INCL. Dezimaltrennzeichen
und die 2 sind ja die NachkommastellenDas Fette kannte ich noch nicht!
Vielen Dank!Demnach wäre ein
strVal.Format("%04.2d", Val);
genau das Richtige für mich!
-
Wird das Dezimaltrennzeichen doch nicht mitgezählt?
Naja, Hauptsache, es geht jetzt...
-
estartu_de schrieb:
Wird das Dezimaltrennzeichen doch nicht mitgezählt?
Guter Einwand.
strVal.format("%04.2f", Val);
klappte es leider nicht. Als Ergebnis hatte ich bei Val = 9.03 den Wert 90.30.
Aber ich habe es jetzt bei meiner Lösung belassen...
Edit:%05.2f
Ist es.
Das Dezimaltrennzeichen wird mitgezählt!
-
Okay, dann hatte ich das doch noch richtig im Kopf. Ich dachte schon, ich muss meine alte C-Mappe suchen.