Comment convertir une chaîne représentant un nombre décimal sous forme exponentielle flotter dans Qt?

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

Question

J'ai quelques chiffres décimaux dans un fichier texte représenté sous forme exponentielle Ex: 144.2e-3. Je veux stocker les valeurs float. En qt elle retourne « 0 » quand j'utiliser directement la méthode « number.toFloat () ». S'il vous plaît aider.

Était-ce utile?

La solution

toFloat () devrait fonctionner. Vérifiez que votre chaîne ne contient que le numéro. Si la chaîne contient quelque chose d'autre aussi, par exemple "144.2e-3 a", puis retourne la toFloat () 0. Notez que également d'autres chiffres dans la chaîne entraînera la conversion à l'échec, par exemple QString("144.2e-3 100").toFloat() retournera 0.

espaces supplémentaires dans la chaîne de numéro n'a pas d'importance, mais d'autres personnages font.

Autres conseils

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

L'utilisation d'un stringstream vous pouvez convertir un nombre exponentiel du type de données dont nous avons besoin.

Utilisez QString::toDouble.

Exemple:

bool ok;
float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top