Russian Qt Forum
Ноябрь 23, 2024, 17:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: странности с QList  (Прочитано 3271 раз)
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})

Что это такое может быть???
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Май 24, 2010, 17:11 »

Код:
QList<QPointF> m_data;
    m_data.append(QPointF(0.,0.));
    qDebug()<<m_data.at(0);
Нормально отрабатывает и выводит нули.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
SASA
Гость
« Ответ #2 : Май 24, 2010, 17:41 »

9.824175213015e-317#DEN - тоже на ноль похоже.

Если вы пользуетесь типами с плавающей точкой то примые сравнения (==) не приемлемы, т.к. они задают число с какой-то точностью.
Записан
fsMark
Гость
« Ответ #3 : Май 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
« Последнее редактирование: Август 08, 2011, 16:52 от fsMark » Записан
SimpleSunny
Гость
« Ответ #4 : Май 25, 2010, 08:02 »

to fsMark:
abs поправить на fabs (qAbs).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.061 секунд. Запросов: 23.