Тема: проблемма с прямыми параллельными Ox и Oy

void ppriyamie()
{
ads_point p, p1,p2;
acedGetPoint(p,_T("\nУкажите точку 1 "),p1);
acedGetPoint(p,_T("\nУкажите точку 2 "),p2);
AcGePoint3d point1 = asPnt3d(p1);
AcGePoint3d point2 = asPnt3d(p2);
if (point1[X]==point2[X]) acutPrintf(_T("\nравны координаты х"));
if (point1[Y]==point2[Y]) acutPrintf(_T("\nравны координаты y"));
}

1)почему не всегда срабатывает?
2)можно ли этого как-то избежать?

Re: проблемма с прямыми параллельными Ox и Oy

> giena
Ты работаешь с плавающей арифметикой, в которой равенство не работает в отличие от цеелых чисел. Правильнее сравнивать с заданной точностью ("допуском"). Например, так:

const double FUZZ = 1e-6; // Точность сравнения
if (fabs(point1[X]-point2[X]) < FUZZ)acutPrintf(_T("\nравны координаты х"));
if (fabs(point1[Y]-point2[Y]) < FUZZ) acutPrintf(_T("\nравны координаты y"));

Re: проблемма с прямыми параллельными Ox и Oy

респект!