float im String



  • Hi,
    wie kann ich wenn ich einee floatvariable in ein String "einbaue", das float auf 2 Stellen nach dem Komma begrenzen?



  • Man kann z.B. die Fließkommazahl zunächst auf 2 Stellen nach dem Komma abrunden und anschließend in den String schreiben.
    Hier ein Code-Beispiel zum Abrunden:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        float zahl;
        cin >> zahl;
        zahl = int( 100*zahl + 0.5 ) / 100.0; //runden auf 2 Nachkommastellen
        cout << zahl;
        return 0;
    }
    


  • Danke

    hab vergessen zu sagen dass ich einen CString vewende.
    Das mit dem Runden hat geklappt, aber wie bekomme ich es hin dass wenn ich die Zahl dann auch nur mit 2 Stellen hinter dem komma im String stehen habe?

    also mit
    string.Format("%f", zahl);

    [ Dieser Beitrag wurde am 01.08.2002 um 00:10 Uhr von Galan Drakos editiert. ]



  • 1. schau mal in die FAQ, dann wüsstest du mehr...
    2. die lösung über den int dürfte am besten sein...

    int = float *100;
    float = int;
    float /= 100;
    CString::format("%f",float);

    Devil



  • hi,

    ich weiß nicht, ob das alles so funzt 🙂
    habs nicht ausprobiert. wenn irgendwas nicht klappt, dann meld dich einfach nochmal.

    CString strFloat; // Hier steht die float-variable drin
    
    strFloat.SetAt((strFloat.Find('.')+2), '\0');
    

    Die Idee:
    Ich suche den Punkt ('.'), also die kommastelle, und setze 2 zeichen danach ein '\0', was den string beendet



  • Danke Devil, aber das meinte ich nicht, soweit habe ichs schon beim Erhard verstanden.
    Nach deiner Methode steht ja dann im String

    zb: 12.560000
    es soll aber nur 12.56 im String stehen.

    und die Methode von Dommel kann ich auch nicht verwenden, da im String 3 floats mit jeweils 2nachkommastellen stehen sollen.



  • dann nimm doch erst drei strings mit je einer float-var drin und pack die dann einfach zu einem string zusammen



  • Hallo, probier mal folgendes:

    float fValue = 0.047645645;
    CString strAusgabe;
    strAusgabe.Format("%.2f",fValue);
    

    Durch das .2 legst du die precision fest. In dem Fall liegt sie bei 2 Nachkommastellen.
    Der Float wird automatisch gerundet, d.h. strAusgabe beinhaltet den String "0.05"

    Gruß
    bzagh



  • Dommel:
    Uff! Mach sowas nicht! Du hast nachher ganz üble Probleme, wenn du an den String noch was anhengen willst!

    CString strWithNULL = "Hallo!";
    strWithNULL.Replace("!","\0");
    strWithNULL+=", hallo";
    MessageBox(strWithNULL);
    

    In der MessageBox steht jetzt Hallo und nciht, wie vielleicht erwartet Hallo, hallo ...

    DIe Lösung von bzagh ist die einzige, wirklich brauchbare, welche auch allen anforderungen gerecht wird 🙂



  • Juhu, danke 🙂
    Jetzt klapt es wunderbar.



  • Original erstellt von dEUs:
    **Dommel:
    Uff! Mach sowas nicht! Du hast nachher ganz üble Probleme, wenn du an den String noch was anhengen willst!
    **

    ohh... wusste ich gar nich 🙄
    wie kann ich denn dann von einem CString was abschneiden??
    mit 'CString::Left()' oda wie ?



  • Remove
    Left
    Mid
    Right


Anmelden zum Antworten