W programie mam metodę sprawdzającą czy dany punkt należy do trójkąta czy nie, w taki sposób, że gdy mamy trójkąt ABC i punkt P to jeżeli pole trójkąta ABC = sumie pól trójkątów PAB + PAC + PBC to punkt należy do tego trójkąta, w przeciwnym razie leży poza nim.
Na kartce wszystko się zgadza, ale niestety podczas wyliczania długości boków trójkątów, oraz pola ze wzoru Hornera, korzystam m.in. z Math.sqrt, w związku z czym wychodzą jakieś miejsca po przecinku i w rezultacie niemal w 100% punkty, które należą do trójkątów są oznaczane jako nienależące - pola różnią się, jak przypuszczam z tego powodu, że typy liczbowe, na których operuje mają określony zakres i dokładność.
Próbowałem już przy obliczeniach stosować double - żeby mieć dokładne wyniki, a następnie rzutować na float, albo stosować chwyty typu :
p = Math.round(p*100);
p /= 100;
Niestety wszystko na nic, wie ktoś jak temu zaradzić ?