Wie eine Zeichenfolge, die Dezimalzahl in exponentieller Form konvertieren in Qt zu schweben?
-
03-10-2019 - |
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.
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));