Оператор if не правильно сравнивает числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени века! Написал значит кодец, в конце идет сравнивание значений двух переменных, их значения равны, а оператору if пофигу!!! Не хочет нормально работать, зараза. Весь кодец:
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. int main(void)
  4. {
  5. double AB, BD, DA; // довжини сторін трикутника #1
  6. double DB, BC, CD; // довжини сторін трикутника #2
  7. double AD, DC, CA; // довжини сторін трикутника #3
  8. double x1, y1; // координати вершини A
  9. double x2, y2; // координати вершини B
  10. double x3, y3; // координати вершини C
  11. double x, y; // координати довільної точки
  12. double pABD, pBCD, pCAD; // напівпериметри трикутників
  13. double sABD, sBCD, sCAD; // площі трикутників з точкою "D"
  14. double pABC; // напівпериметр основного трикутника
  15. double sABC; // площа основного трикутника
  16. x1 = -2;
  17. y1 = -1;
  18. x2 = -1.5;
  19. y2 = 0;
  20. x3 = 1;
  21. y3 = 0;
  22. printf("Input x-coordinate of point: ");
  23. scanf("%lf", &x);
  24. printf("Input y-coordinate of point: ");
  25. scanf("%lf", &y);
  26. AD = sqrt( pow((x1-x ),2) + pow((y1-y ),2)); // довжина сторони AD
  27. BD = sqrt( pow((x2-x ),2) + pow((y2-y ),2)); // довжина сторони BD
  28. CD = sqrt( pow((x3-x ),2) + pow((y3-y ),2)); // довжина сторони CD
  29. AB = sqrt( pow((x2-x1),2) + pow((y2-y1),2)); // довжина сторони AB
  30. BC = sqrt( pow((x3-x2),2) + pow((y3-y2),2)); // довжина сторони BC
  31. CA = sqrt( pow((x1-x3),2) + pow((y1-y3),2)); // довжина сторони CA
  32. pABD = ( AB + BD + AD ) / 2; // напівпериметр трикутника ABD
  33. pBCD = ( BD + BC + CD ) / 2; // напівпериметр трикутника BCD
  34. pCAD = ( AD + CD + CA ) / 2; // напівпериметр трикутника CAD
  35. pABC = ( AB + BC + CA ) / 2; // напівпериметр трикутника ABC
  36. sABD = sqrt( pABD * (pABD - AB) * (pABD - BD) * (pABD - AD) );// площа ABD
  37. sBCD = sqrt( pBCD * (pBCD - BD) * (pBCD - BC) * (pBCD - CD) );// площа BCD
  38. sCAD = sqrt( pCAD * (pCAD - AD) * (pCAD - CD) * (pCAD - CA) );// площа CAD
  39. sABC = sqrt( pABC * (pABC - AB) * (pABC - BC) * (pABC - CA) );// площа ABC
  40. printf("%lf\n", sABD + sBCD + sCAD);
  41. printf("%lf\n", sABC);
  42. if ( (sABD + sBCD + sCAD) == sABC )
  43. {
  44. printf("Point belongs to the plane!\n");
  45. } else
  46. {
  47. printf("Point doesn't belongs to the plane!\n");
  48. }
  49. system ("pause");
  50. }
Часть кодца, где сравниваю значения переменных:
Листинг программы
  1. if ( (sABD + sBCD + sCAD) == sABC )
  2. {
  3. printf("Point belongs to the plane!\n");
  4. } else
  5. {
  6. printf("Point doesn't belongs to the plane!\n");
  7. }
Скрин, на котором видно что значения сравниваемых переменных равны (прикрепил). Вопрос: в чем проблема? Заранее спасибо!

Решение задачи: «Оператор if не правильно сравнивает числа»

textual
Листинг программы
  1. x=(floor(x*1000))/1000;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы