Re[4]: Помогите мат. вычиления
От: Аноним  
Дата: 24.06.04 17:10
Оценка:
Здравствуйте, Vorobiev Sergei, Вы писали:

VS>Здравствуйте, Aloner, Вы писали:


A>>и условие (ТОК == SCROLLBAR->POSITION * 0.01) несправедливо.

A>>вышел из ситуации след. образом.

A>>if (fabs(ТОК — double(SCROLLBAR->POSITION) * 0.01)<0.001)


A>>Хотел просто разобраться, правильно или нет.


VS>Правильно. Числа с плавающей точкой можно сравнивать только в эпсилон окрестности. Т.к. при вычислениях возникает погрешность, из-за того что кол-во знаков после запятой ограничено.

VS>Лучше делать так.

VS>
VS>#include <float.h>
VS>...
VS>if (fabs(ТОК - double(SCROLLBAR->POSITION) * 0.01) < DBL_EPSILON)
VS>{
VS>...
VS>}
VS>


Спасибо!!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.