binarna reprezentacja liczby wymiernej

0

Pisząc algorytm który zamienia ułamek na postać binarną (posługując sie teorią z artukułu http://4programmers.net/article.php/id=168) napotkałem na 2 problemy, mianowicie:

  1. W algorytmie tym trzeba oddzielic część całkowitą od częsci ułamkowej, czyli jezeli mam 12.65 to musze miec w osobnych zmiennych 12 i 0.65, jak to zrobić, moze jest jakaś funkcja która mi to usprawni (samemu można to konwertowac na string i wtedy poddać obróbce ale moze jest szybszy sposób ?).

  2. Jak napisać ten algorytm zeby działał również dla nieskończonego rozwinięcia okresowego w postaci binarnej, mianowicie jak wyłapać że dana suma np. 1 + 0.2 się już powtórzyła co oznajmia koniec okresu i początek następnego takiego samego.

Prosze o podpowiedzi</url>

0

Co do 1:
Załóżmy że masz liczbę

double x=12.654;

Aby uzyskać część całkowitą zastosuj zwykłe dzielenie przez 1 dla integera:

int c=x/1;

a żeby odzyskać część ułamkową od x odemij c i zapisz jako double, np.

double u=x-c;
</cpp>
0

http://4programmers.net/file.php/id=1403

Tam masz w praktyce zrobioną konwersję o ile dobrze pamiętam tybu single.
Poza tym, dla formalności... No cóż skoro cecha i mantysa mają ograniczony rozmiar, to żaden typ zmiennoprzecinkowy nie pozwoli Ci na zapis rozwinięcia nieskończonego ( 0.33(3) ) .

1 użytkowników online, w tym zalogowanych: 0, gości: 1