Frage

Ich habe einige Dezimalzahlen in einer Textdatei in exponentieller Form Eg dargestellt: 144.2e-3. Ich möchte die Werte in float speichern. In qt gibt sie "0", wenn i direkt die "number.toFloat ()" Methode. Bitte Hilfe.

War es hilfreich?

Lösung

toFloat () sollte funktionieren. Überprüfen Sie, ob die Zeichenfolge nur die Zahl enthält. Wenn der String etwas anderes zu enthalten, so zum Beispiel "144.2e-3 a", dann ist die toFloat () gibt 0 Beachten Sie, dass auch andere Zahlen in der Kette bewirkt, dass die Umwandlung fehlschlagen, zum Beispiel QString("144.2e-3 100").toFloat() 0 zurück.

Zusätzliche Leerzeichen in der Zahlenfolge spielt keine Rolle, aber auch andere Zeichen tun.

Andere Tipps

value = 3.91e+01;
double doubleValue;
stringstream valuestream(value);
valuestream >> doubleValue;

ein string können Sie in exponentielle Zahl in den Datentyp konvertieren wir benötigen.

Mit QString::toDouble.

Beispiel:

bool ok;
float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top