@enedil: Um wydaje mi się, że ten epsilon to może być za mała tolerancja błędu, gdyby robić to na poważnie.
@cs: Z floatami sam OP wyskoczył, więc zakładam, że zadanie wymaga.
Trudno mi sobie wyobrazić, by zadanie na tym poziomie wymagało wiedzy z zakresu wyznaczania niepewności obliczeń zmiennoprzecinkowych!
@Brunatny Ogórek: Skąd jest to zadanie i czego ono konkretnie wymaga?
- Czy zadanie wymaga użycia floatów?
- Czy zadanie wymaga obliczenia, czy punkt leży dokładnie na krawędzi okręgu?
Jeśli zadanie wymaga obu tych rzeczy na raz...
- Czy ten kurs mówił wcześniej o kwestii niedokładności obliczeń zmiennoprzecinkowych lub chociażby słowem wspomniał o konieczności jak najdalej posuniętej ostrożności przy używaniu operatora
==
dla floatów doublów itd?
- Czy aby na pewno to zadanie jest dla początkujących?
Jeśli to zadanie jest dla początkujących ORAZ mówili o ostrożności przy ==
, to ja się poddaję. Jeśli to zadanie jest dla początkujących i nic o tym nie mówili, to tym gorzej dla nich. Walnij ==
, nie przejmuj się epsilonami, nie będzie działać dla niektórych punktów o współrzędnych będących ułamkami, miej to w (...), tylko zapamiętaj na przyszłość, ze z tym są problemy i cyrki.
Jeśli to zadanie JEST niedokładność obliczeń zmiennoprzecinkowych, to widzę 2 możliwości:
- Albo jesteś na matematyce i każą Ci zdobyć podstawowe obycie programistyczne - wtedy sam wiesz, jak masz liczyć te zakresy tolerancji
- Albo sobie odpuść.
Chyba, że potrzebujesz tego do celów praktycznych? Wtedy skorzystaj z gotowych rozwiązań, zamiast próbować wymyślić własne.