Comment convertir une chaîne représentant un nombre décimal sous forme exponentielle flotter dans Qt?
-
03-10-2019 - |
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.
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));