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.00

    Wie 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 Nachkommastellen

    🙂

    Das 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. 😃


Anmelden zum Antworten