formatierte ausgabe einer zahl (tausender stellen)

Alles rund um die Programmierung mit Qt
Antworten
data
Beiträge: 23
Registriert: 22. November 2004 22:33

formatierte ausgabe einer zahl (tausender stellen)

Beitrag von data »

hi,

ich habe folgende eingabe, sowie ausgabe:

Code: Alles auswählen

// Eingabe deklarieren und initialisieren, zgl. Umwandlung in double (+ Kommaumwandlung)
    double eingabe = input_edit->text().replace(",", ".").toDouble();

// Ausgabe formatieren
    QString str;
    str.sprintf("%.2f", eur_wert);
    str.replace(".",",");
    output_edit->setText( str );
nun wollte ich noch die ausgabe weiter formatieren und zwar soll diese noch die tausender stellen repräsentieren (z.b. 1.000.000,10).
hat jemand diesbezüglich einen vorschlag für mich?
in der stdio.h gibt es eine funktion namens sprintf, welche u.a. posix-locale nutzt, die die formatierungen entsprechend setzen.
man sprintf

Code: Alles auswählen

...
 Für  einige  numerische  Umwandlungen  wird  ein  Radixzeichen  ("Dezi-
       malkomma")   oder   ein  Tausender-Gruppierungszeichen  verwendet.  Des
       tatsächlich benutzte Zeichen hängt vom LC_NUMERIC-Teil der  Locale  ab.
       Die  POSIX-Locale  benutzt  `.'  als  Radixzeichen  und  hat kein Grup-
       pierungszeichen. Damit resultiert
                   printf("%'.2f", 1234567.89);
       in `1234567.89' in der POSIX-Locale,  in  `1234567,89'  in  der  Locale
       nl_NL und in `1.234.567,89' in der Locale da_DK.

bei qt habe ich jedoch noch nichts vernünftiges gefunden.

cu...
daniel
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

QString( "%1" ).arg( eur_wert, 0, 'f', 2 ).replace( ".", "," )
data
Beiträge: 23
Registriert: 22. November 2004 22:33

Beitrag von data »

wenn du das so meinst:

Code: Alles auswählen

output_edit->setText( QString( "%1" ).arg( eur_wert, 0, 'f', 2 ).replace( ".", "," ) );
funktioniert nicht.

die formatierung wird nicht entsprechend geändert, zumindest unter linux nicht :(

hat evtl. noch jemand vorschläge?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Mh, entschuldige. Aber diese Zeile funktioniert und das 100%ig. Außerdem stehen mehr Hinweise in der Dokumentation. Was für ein Typ ist eur_wert? Sollte es etwas anderes als double sein geht es nicht, ist aber klar, oder?
data
Beiträge: 23
Registriert: 22. November 2004 22:33

Beitrag von data »

das ging ja schnell :wink:

der typ ist ein ganz normaler double ...
hatte auch schon hin und her probiert, geht nicht.

in der var steht beispielsweise 13456.56, welcher jeweils berechnet wird.
diesen wert beabsichtige ich in 13.456,56 zu formatieren (tausenderstellen).

die passage in der doku habe ich gelesen (übrigends habe qt 3.2) und div. einstellungen probiert.
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Aha, ok, du willst die tausender Punkte und nicht das Komma an der zweiten Stelle? Vielleicht habe ich das ganze ein bischen zu schnell gelesen. Mh, um das zusteuern sollte QLocale dein Freund sein, da sind die Schemen alle enthalten für die ganzen Länder und damit geht es glaube ich, das nach tausendern zu trennen. Ansonsten machst halt eine for schleife, die immer alle drei stellen nach dem Komma einen Punkt setzt?
data
Beiträge: 23
Registriert: 22. November 2004 22:33

Beitrag von data »

danke, ich schau mir die sache mit qlocale noch einmal an...

zu der schleife, nee erstmal nicht, nur im notfall :wink:
Antworten