Come convertire una stringa che rappresenta numero decimale in forma esponenziale a galleggiare in Qt?
-
03-10-2019 - |
Domanda
Ho alcuni numeri decimali in un file di testo rappresentato in forma esponenziale Eg: 144.2e-3. Voglio memorizzare i valori in float. In qt restituisce "0" quando uso direttamente il metodo "number.toFloat ()". Si prega di aiuto.
Soluzione
toFloat () dovrebbe funzionare. Verificare che la stringa contiene solo il numero. Se la stringa contiene anche qualcos'altro, per esempio "144.2e-3 a"
, poi la toFloat () restituisce 0. Si noti che anche altri numeri nella stringa causerà la conversione a fallire, ad esempio QString("144.2e-3 100").toFloat()
restituirà 0.
Ulteriori spazi bianchi nella stringa di numero non ha importanza, ma altri personaggi fare.
Altri suggerimenti
value = 3.91e+01;
double doubleValue;
stringstream valuestream(value);
valuestream >> doubleValue;
Utilizzando uno stringstream è possibile convertire numero esponenziale per il tipo di dati abbiamo bisogno.
Usa QString::toDouble
.
Esempio:
bool ok;
float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));