atof возвращает только целые числа?

У меня есть процедура, которая получает числа в формате экспоненты (например, 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;

0

Решение

Почему ты делаешь всю эту работу? Qt уже имеет то, что вы ищете, если вы используете QString :: toDouble а также QString :: номер (). Если вы установили локаль вручную перед вызовом toDouble (), вы можете использовать десятичную запятую без замены.

Вы также можете создать шаблон строки, как QString("[%1,%2]") а затем использовать double версия QString::arg,

1

Другие решения

Функция преобразования не поддерживает ваши место действия, который использует запятую в качестве десятичного разделителя. использование 2.4e4 вместо.

1

По вопросам рекламы [email protected]