Konvertierung von Float in CString



  • Hallo,
    ich möchte einen Wert von float in CString wandeln, wobei ich die Vor- und Nachkommastellen explizit angeben möchte.

    Normalerweise geht das ja so:

    CString		strWert;
    float           wert;
    
    	strWert.Format("%5.3f", wert);
    

    Das ist schon klar....!

    Jetzt möchte ich aber die Anzahl der Vor- und Nachkommastellen als PARAMETER übergeben, sprich so:

    String CDateneingabe::FloatToStringF(float wert, int precision, int digits)
    // -------------------------------------------------------------------------------
    {
    	//	lokale String-Variable
    	CString		strWert;
    
    	strWert.Format("%precision.digits f", wert);
    
    	return strWert;
    }
    

    Nur so klappt es leider (logischerweise!) nicht... 🙄

    Wie realisiert man das denn sinnvoll und einfach?!?! 😕

    Danke schon Mal im Voraus.

    Gruss
    S.



  • Du kannst doch den Formatstring genauso zusammensetzen:

    CString strFormat;
    strFormat.Format("%%%d.%df", precision, digits);
    
    CString strWert;
    strWert.Format(strFormat, wert);
    


  • Ich habe es nicht ausprobiert aber funktioniert:

    strWert.Format("%(%d.%d)f",precision,digits,wert);
    


  • Nein, das letztere dürfte nicht funktionieren, aber mit strWert.Format("%*.*f",digits,precision,wert); sollte das entsprechende Ergebnis liefern.

    (btw, erst kommt die Zeichenzahl, dann die Präzision)



  • Hehe, wollte eigentlich nicht schreiben:

    Ich habe es nicht ausprobiert aber es funktioniert:

    sondern eigentlich:

    Ich habe es nicht ausprobiert , ob es funktioniert:

    Aber ist eigentlich logisch.🤡



  • Hallo
    und Danke für die Vorschläge.

    Die Version von CStoll (off) funktioniert auf jeden Fall....Danke.
    Jetzt habe ich auch endlich verstanden wofür man den * hier noch verwenden kann 🙄

    Also, Danke euch allen und noch ein schönes Wochenende. 🕶

    Gruss
    S.



  • Danke.
    Auch so!

    🙂


Anmelden zum Antworten