Hallo Zusammen,
irgendwie komme ich mit QString::setNum nicht zum gewünschten Ergebnis bei der Wandlung und Formatierung eines Double Wertes zu einem String.
Ich möchte max. 2 Nachkommastellen im String angezeigt bekommen:
12.00 = "12"
12.10 = "12.1"
12.12 = "12.12"
12.123 = "12.12"
Mit welcher Stringformatierung könnte ich das erreichen?
Viele Grüße
[gelöst] Double to String mit max. 2 Nachkommastellen
[gelöst] Double to String mit max. 2 Nachkommastellen
Zuletzt geändert von 101 am 3. Oktober 2009 09:57, insgesamt 1-mal geändert.
der c-like weg:
der C++ like Weg:
Ciao ...
Code: Alles auswählen
QString strTest;
double d = 12.0;
strTest.sprintf("%2.2f",d);
Code: Alles auswählen
double d = 12.0;
QBuffer buffer;
QTextStream stream(&buffer);
stream.setRealNumberNotation(QTextStream::FixedNotation);
stream.setRealNumberPrecision(2);
stream << d;
QString myFormatedDoubleString = buffer.buffer().toString();
Mit:
zeigt er immer zwei Nachkommastellen an.
Code: Alles auswählen
QString strTest;
double d = 12.0;
strTest.sprintf("%2.2f",d);
das ganze geht auch 'Qt-only':
Gruß Michael
Code: Alles auswählen
QString formatierterWert=QString( "%1" ).arg( zuFormatierender Wert, 0, 'f',anzahlNachkommaStellen);Gibt viele Loesungen ... alle haben vor und nachteile ....
um abschliessende Nullen wegzuküzen, gibt es auch flags ....
Schau Dir die dokumentation zu printf (C) an ... da gibts ne ganze menge mehr möglichkeiten.
Ciao ...
das "%2.2f" kannst du natuerlich auch dynamisch (zur laufzeit) erstellen ....zeigt er immer zwei Nachkommastellen an.
um abschliessende Nullen wegzuküzen, gibt es auch flags ....
Schau Dir die dokumentation zu printf (C) an ... da gibts ne ganze menge mehr möglichkeiten.
Ciao ...
Ist zwar ein bisschen eigenwillig, aber so komme ich zu meinen gewünschten Ergebnis:
Viele Grüße und Danke für die Antworten 
Code: Alles auswählen
double dTest = 12.348;
qDebug() << "Double mit max. 2 Nachkommastellen: " << QString::number((double)qRound(dTest*100)/100);