Seite 1 von 1
[gelöst] Double to String mit max. 2 Nachkommastellen
Verfasst: 2. Oktober 2009 10:43
von 101
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
Verfasst: 2. Oktober 2009 10:56
von RHBaum
der c-like weg:
Code: Alles auswählen
QString strTest;
double d = 12.0;
strTest.sprintf("%2.2f",d);
der C++ like Weg:
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();
Ciao ...
Verfasst: 2. Oktober 2009 12:56
von 101
Mit:
Code: Alles auswählen
QString strTest;
double d = 12.0;
strTest.sprintf("%2.2f",d);
zeigt er immer zwei Nachkommastellen an.
Verfasst: 2. Oktober 2009 13:04
von MichaelS
das ganze geht auch 'Qt-only':
Code: Alles auswählen
QString formatierterWert=QString( "%1" ).arg( zuFormatierender Wert, 0, 'f',anzahlNachkommaStellen);
Gruß Michael
Verfasst: 2. Oktober 2009 13:46
von RHBaum
Gibt viele Loesungen ... alle haben vor und nachteile ....
zeigt er immer zwei Nachkommastellen an.
das "%2.2f" kannst du natuerlich auch dynamisch (zur laufzeit) erstellen ....
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 ...
Verfasst: 3. Oktober 2009 09:57
von 101
Ist zwar ein bisschen eigenwillig, aber so komme ich zu meinen gewünschten Ergebnis:
Code: Alles auswählen
double dTest = 12.348;
qDebug() << "Double mit max. 2 Nachkommastellen: " << QString::number((double)qRound(dTest*100)/100);
Viele Grüße und Danke für die Antworten
