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

У меня есть несколько десятичных чисел в текстовом файле, представленном в показательной форме, например: 144.2e-3. Я хочу хранить значения в float. В qt он возвращает «0», когда я напрямую использую метод «number.toFloat ()». Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 17 сентября 2010

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

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

1 голос
/ 22 февраля 2011
value = 3.91e+01;
double doubleValue;
stringstream valuestream(value);
valuestream >> doubleValue;

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

0 голосов
/ 17 сентября 2010

Использование QString::toDouble.

Пример:

bool ok;
float f = static_cast< float>( QString( "1234.56e-02" ).toDouble( &ok));
...