float - to zmienna na liczby zmiennoprzecinkowe , ma 4 bajty , i można w niej zapisać 7 ( 8 ) cyfr z zapisu dziesiętnego .
double - to zmienna o "podwyższonej" precyzji obliczeń , ma 8 bajtów i można w niej przechować 15 ( 16 ) cyfr .
Liczby w tym typie danych są przechowywane w postaci wykładniczej ,
Dla coraz większych liczb maleje precyzja obliczeń .
W najgorszym możliwym przypadku w tym zadaniu kolejne punkty mogą być w przeciwległych rogach dozwolonego obszaru x1=( -10000,-10000) , x2=(10000,10000).
Po wykonaniu obliczeń (x2.x -x1.x)(x2.y-x1.y) = (10000 -(-10000))(10000 -(-10000)) = 20000*20000 = 400000000
400 milionów już przekracza zakres 8 cyfr a więc nie da się nawet wszystkich liczb całkowitych
przedstawić .
Napisz program w którym np do zmiennej typu float wstawiasz liczbę 400000003 - i wypisz na konsole tą zmienną .
Możliwe też że błędy powstawały podczas dodawania "odleglosc+=sqrt(...)" bo tu mogła następować konwersja między double a float .
Tak powstawały małe błędy ( zapewne tylko dla punktów położonych daleko od środka obszaru ) które z każdą iteracja się kumulowały - sędzia nie miał wyboru musiał odrzucić wynik .