kostenloser Webspace werbefrei: lima-city


CString .Format

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    l*****i

    Hallo,

    ich habe eine float Zahl mit x nachkomma stellen z.B.

    float fWert = 2.3845;

    jetzt habe ich noch eine andere variable, in der die anzahl der nachkomma stehen z.B.

    int iNachkomma = 1

    als ergebnis soll dann

    2.3 in einer Variablen stehen.
    oder wenn iNachkomma = 2 dann 2.38.

    so geht es auf 2 Stellen:
    CString s;
    s.Format("%01.2f", fWert );

    nur ich will es halt variabel.
    Ist das ?berhaupt m?glich?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich hab mir das jetzt nicht ganz genau ?berlegt aber du k?nntest mit
    strchr den Punkt in der Kommazahl finden und den ersten Teil der Zahl(vor dem Punkt) inkl. Punkt ausgeben und danach in einer Schleife die restlichen gew?nschten Nachkommstellen ausgeben! (einfach von der gefunden Position die Feldzahl des Arrays bis zum gew?nschten Wert erh?hen)
    Hoffe du verstehst was ich meine und ich hoffe auch das es funktioniert!
  4. Autor dieses Themas

    l*****i

    danke,

    das w?re mein Plan B wenn die einfachere M?glichkeit mit CString::Format nicht funktioniert.

    Eigentlich m?sste es doch f?r sowas eine Funktion geben, oder?
  5. 0******a

    float fWert = 2.3845;
    int iNachkomma = 1
    CString s;

    s.Format((iNachkomma == 1) ? "%01.1f" : "%01.2f", fWert );


    Es wird nur schwer, wenn du noch mehr verschiedene M?glichkeiten haben willst. Dann wird es bei dieser M?glichkiet durch die Verschachtelung so un?bersichtlich, das ich das dann an deiner Stelle in eine eigene Funktion auslagern w?rde.
  6. Autor dieses Themas

    l*****i

    habs jetzt so gel?st:
    (Ist zwar nicht der sch?nste Weg, aber es geht)


    CString s;
    CString sWert;
    s.Format("%f", wert);
    char *pdest;
    int result;
    pdest = strchr( s, '.');
    result = pdest - s + 1;

    sWert.Format("%s%s",s.Left(result),s.Mid(result,lNachkomma));
  7. 0******a

    Falls es noch jemanden interessiert:
    Als Funktion zum Erstellen von variablen Nachkommastellen w?rde das ungef?hr so aussehen:

    void FloatFormat(CString & rstrFloat, float fFloat, unsigned short int usNachkomma)
    {
    ???CString strTemp;

    ???strTemp.Format("%%01.%uf", usNachkomma);
    ???rstrFloat.Format(strTemp, fFloat);
    }

    fFloat wird in rstrFloat abgelegt, vorher wird noch per usNachkomma festgelegt, wie viele Nachkommastellen angezeigt werden sollen.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!