Russian Qt Forum

Qt => Общие вопросы => Тема начата: dr_Begemot от Май 24, 2010, 17:03



Название: странности с QList
Отправлено: dr_Begemot от Май 24, 2010, 17:03
Вот кусок кода:

QList<QPointF> m_data;
m_data.append(QPointF(0.,0.));

В результате, в списке почему-то не точка (0,0), а m_data = [1]({x=9.824175213015e-317#DEN y=0.00000000000000000})

Что это такое может быть???


Название: Re: странности с QList
Отправлено: kibsoft от Май 24, 2010, 17:11
Код:
QList<QPointF> m_data;
    m_data.append(QPointF(0.,0.));
    qDebug()<<m_data.at(0);
Нормально отрабатывает и выводит нули.


Название: Re: странности с QList
Отправлено: SASA от Май 24, 2010, 17:41
9.824175213015e-317#DEN - тоже на ноль похоже.

Если вы пользуетесь типами с плавающей точкой то примые сравнения (==) не приемлемы, т.к. они задают число с какой-то точностью.


Название: Re: странности с QList
Отправлено: fsMark от Май 25, 2010, 07:37
Это у тебя и есть ноль.. просто в принципе точность конечна, отсюда приближенные значения

Работать надо примерно так:
Код:
qreal eps = 0.001; //требуемая точность 

//равенство
bool eq(qreal a, qreal b){
    return (fabs(a - b)<eps);
}

//больше
bool more(qreal a,  qreal b){
    return ((a-b)>eps);
}

to SimpleSunny: ok


Название: Re: странности с QList
Отправлено: SimpleSunny от Май 25, 2010, 08:02
to fsMark:
abs поправить на fabs (qAbs).