Come convertire una stringa che rappresenta numero decimale in forma esponenziale a galleggiare in Qt?

StackOverflow https://stackoverflow.com/questions/3730594

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.

È stato utile?

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));
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top