Jeśli chodzi o tę czwórkę na końcu reprezentacji 0.(3). Liczba z nieskończonym rozwinięciem, np. 0.(3) jest reprezentowana w standardzie IEEE-754, który oczywiście ma do dyspozycji skończoną liczbę bitów (a zatem precyzję). Czwórka na końcu reprezentacji 0.(3) wynika z zaokrąglenia, ale uwaga, nie z zaokrąglenia w systemie dziesiętnym (wtedy 3 zaokrągliłoby się do 0), tylko binarnym.
Nie wiem co dokładnie chcesz zrobić, bo swój problem opisałeś bardzo zawile. Z treści komentarza wydaje mi się, że implementujesz swój (własny?) algorytm dzielenia liczb, które przechowujesz jako napisy(?) i zastanawiasz się kiedy przerwać dzielenie i uznać, że wyszła liczba z nieskończonym rozwinięciem? Jeśli tak, to odpowiedź byłaby taka:
W systemie binarnym:
- Dodawanie dwóch skończonych liczb zawsze da wynik skończony.
- Odejmowanie dwóch skończonych liczb zawsze da wynik skończony.
- Mnożenie dwóch skończonych liczb zawsze da wynik skończony;
- Dzielenie dwóch liczb (a/b) daje wynik skończony pod warunkiem, że jedyne czynniki pierwsze mianownika b to 2 i 5.
Innymi słowy, przy dzieleniu mając dwie liczby a i b, musisz rozłożyć mianownik b na czynniki pierwsze i sprawdzić, czy jedynymi czynnikami pierwszymi są 2 i 5. Np. 14 = 2 * 7 (czynnikiem pierwszym jest 7, więc ułamek z liczbą 14 w mianowniku będzie miał nieskończone rozwinięcie)
UWAGA!
Oczywiście napisałem wyżej, że ułamek z 14 w mianowniku będzie nieskończony, ale ułamek 7/14 = 1/2 = 0.5 ma skończone rozwinięcie. Ułamek przed sprawdzeniem musisz najpierw skrócić. Na szczęście nie jest to trudne. Mianownik po skróceniu przyjmie postać: b_skrocone = b / NWD(a,b)
Jeśli wynik będzie nieskończony, to pozostaje kwestia znalezienia okresu i zapamiętania go (albo ucięcia wyniku to określonej liczby cyfr).
Od razu uprzedzam. Jeśli masz jakąś liczbę, na której wykonałeś jakieś działanie, np. odejmowanie albo dzielenie (nie wiesz co dokładnie) i chcesz się "po fakcie" (po wykonaniu tego działania) dowiedzieć czy było to odejmowanie, czy może dzielenie, to jest to rzecz jasna niemożliwe. Zawsze musisz przed wykonaniem działania podjąć decyzję o tym, czy wynik będzie skończony czy nie.
Jeśli chcesz jakoś oznaczyć, że wynik, który wyszedł jest w rzeczywistości nieskończony, tylko został przez algorytm ucięty, to zrób sobie jakąś klasę i ustaw flagę. To już zależy od Ciebie :-)