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 :)