Как преобразовать строку, представляющую десятичное число в экспоненциальной форме, чтобы плавать в Qt?

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

Вопрос

У меня есть десятичные числа в текстовом файле, представленном в экспоненциальной форме, например: 144,2E-3. Я хочу хранить значения в float. В QT он возвращает «0», когда я напрямую использую метод «Number.tofloat ()». Пожалуйста помоги.

Это было полезно?

Решение

Tofloat () должен работать. Убедитесь, что ваша строка содержит только номер. Если строка содержит что-то еще, например, "144.2e-3 a", Тогда Tofloat () возвращает 0. Обратите внимание, что и другие номера в строке приведут к провалищему преобразованию, например QString("144.2e-3 100").toFloat() вернется 0.

Дополнительные пробелы в количественной строке не имеют значения, но другие символы делают.

Другие советы

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

Используя StringStream, вы можете преобразовать экспоненциальное число в The DataType, который нам требуется.

Использовать QString::toDouble.

Пример:

bool ok;
float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top