Jak zamienic liczbe dziesiętną na ułamkową?

0

Czesc.
Czy ktos potrafi zamienic liczbe dziesietno (np. 0,345) na postac ulamkowo(tak ze licznik zapisywany by byl do: edit1.text=69, mianownik do: edit2.text=200 ).
Potrafie zamienic tak, ze mam 345/1000(sprawdzam ile jest miejsc po przecinku(3).Mam licznik(czyli edit1). Mianownik tworze przez utworzenie liczby z jedynki i ilosci miejsc po przecinku zamienianej liczby(jesli 3 to 1000, 2 to 100 itd - mam mianownik)
ale jak to skrocic do najprostszej postaci(tutaj chyba 69/200).
Czy jest jakas funkcja realizujoca to zadanie?
Pozdrawiam wszystkich i prosze o pomoc.

0

Hmm nie za bardzo mam pomysl jak zrobic to w Delphi, ale mialem kiedys na matmie zamiane ulamka okresowego na ulamek zwykly... moze pomoze.. :)

x = 0,(4) = 0,4444....
10x = 4 + 0,4444
10x = 4 + x
9x = 4
x = 4/9

;):)

0

Musisz znaleźć NWD licznika i mianownika i podzielić licznik i mianownik przez to NWD i wyjdzie Ci nieskracalny ułamek.

0

Uprzedzając kolejne pytanie, NWD liczy się tak:

function nwd(a, b:integer):integer;
begin
while a<>b do
begin
if a>b then
a:=a-b;
else
b:=b-a;
end;
result:=a;
end;

(chyba, że coś pokręciłem :-P )

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