Как преобразовать строку, представляющую десятичное число в экспоненциальной форме, чтобы плавать в Qt?
-
03-10-2019 - |
Вопрос
У меня есть десятичные числа в текстовом файле, представленном в экспоненциальной форме, например: 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));