Hilfe: Nachkommastellen sind weg



  • Hallo,

    grad habe ich mal probiert einen CString der so aussieht "123,45"
    in eine Kommazahl umzuwandeln und damit zu rechnen.

    Nun fehlen mir allerdings plötzlich die Nachkommastellen.
    Oder besser gesagt, sie werden als ,00 dargestellt.

    Und ich habe keinen Schimmer warum das so ist 😕

    CString zahl1 = "150,88";
    CString zahl2 = "120,33";
    
    double summe;
    double z1,z2;
    z1=atof(zahl1);
    z2=atof(zahl2);
    
    summe=z1-z2;
    
    CString betrag;
    betrag.Format("%.2f",summe);
    


  • C(++) verwendet den Punkt als Dezimaltrenner und nicht das Komma.



  • Oha, ich sehe schon wo das Problem ist.
    Man darf nur Punkte verwenden.

    Was macht man, wenn das Zahlenwerk so geliefert wird:

    2.000.000,90

    Alle Punkte entfernen und im zweiten Schritt alle Kommata mit Punkten
    ersetzen?



  • So muesste es gehen

    CString strInput(_T("2.000.000,19"));
    strInput.Delete(_T('.'));
    strInput.Replace(_T(','), _T('.'));
    double dInput = _tstof(strInput);
    


  • Genau - so würde ich es machen. (alternativ wäre es auch möglich, mit Locales zu arbeiten, aber damit habe ich keine praktische Erfahrung)



  • Habes bereits so ähnlich gelöst:

    CString zahl1 = "150,88";
    CString zahl2 = "120,33";
    
    zahl1.Replace(",",".");
    zahl2.Replace(",",".");
    
    double summe;
    double z1,z2;
    z1=atof(zahl1);
    z2=atof(zahl2);
    
    summe=z1-z2;
    
    CString betrag;
    betrag.Format("%.2f",summe);
    betrag.Replace(".",",");
    

    geht bei mir so, da zum Glück kein Tausenderpunkt vorkommt.
    Das Beispiel oben, mit der Million, kam mir nur als erstes in den Sinn.

    Habs jetzt aber verstanden.


Anmelden zum Antworten