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;

2 ответа

Решение

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

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

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

Другие вопросы по тегам