J'ai quelques nombres décimaux dans un fichier texte représenté sous forme exponentielle Ex: 144.2e-3. Je veux stocker les valeurs dans float. En qt, il renvoie "0" lorsque j'utilise directement la méthode "number.toFloat()". S'il vous plaît aider.Comment faire pour convertir une chaîne représentant le nombre décimal sous forme exponentielle pour flotter dans Qt?
Répondre
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 d'autres chiffres aussi dans la chaîne entraînera la conversion à l'échec, par exemple QString("144.2e-3 100").toFloat()
retournera 0.
des espaces supplémentaires dans le chaîne de nombre n'a pas d'importance, mais d'autres caractères le font.
Utilisez QString::toDouble
.
Exemple:
bool ok;
float f = static_cast< float>(QString("1234.56e-02").toDouble(&ok));
J'utilisais QString :: toDouble. QString :: toFloat() fonctionne directement. Merci. – Sulla
value = 3.91e+01;
double doubleValue;
stringstream valuestream(value);
valuestream >> doubleValue;
En utilisant un train de chaînes, vous pouvez convertir un nombre exponentiel au type de données dont nous avons besoin.
J'utilisais QString :: toDouble. QString :: toFloat() fonctionne directement. Merci. – Sulla