У меня есть процедура, которая получает числа в формате экспоненты (например, 2,5E-02 или 4E + 06) в виде строки QString. Когда я печатаю значения, я всегда получаю только целые числа, а когда они меньше 1, я всегда получаю 0.
Кто-нибудь знает, что я здесь делаю не так?
(со строкой cout я только хотел проверить, разрушает ли это QString :: number () для меня)
вот фрагмент кода:
QStringList valPair;
value = atof(valPair[0].replace(",",".").toAscii());
value1 =atof(valPair[1].replace(",",".").toAscii());
strValue = "[" + QString::number(value) + ", " + QString::number(value1) + "]";
//cout<<value<<" "<<value1;
Буду признателен за любую помощь!
РЕДАКТИРОВАТЬ: Это была проблема с объявлением переменной …
double value, value1;
Почему ты делаешь всю эту работу? Qt уже имеет то, что вы ищете, если вы используете QString :: toDouble а также QString :: номер (). Если вы установили локаль вручную перед вызовом toDouble (), вы можете использовать десятичную запятую без замены.
Вы также можете создать шаблон строки, как QString("[%1,%2]")
а затем использовать double
версия QString::arg
,
Функция преобразования не поддерживает ваши место действия, который использует запятую в качестве десятичного разделителя. использование 2.4e4
вместо.