Dobrý den, byl bych velice vděčný za radu - nevidím chybu. Účel algoritmu je najít všechny dvojice čísel, jejichž dělením vyjde výsledek s nejvíce dvěma desetinnými místy. Omezení u dělence je 50 až 99 a max dvě desetinná místa, u dělitele 1 až 50 a max jedno desetinné místo.
Najde mnoho příkladů: 50,1/2=25,05 a 50,15/2,5=20,06
ale velká část záznamů v listboxu je 50,399999999999 : 2,8400000000000000000001 ....
nechápu, kde se ty desítky desetinným míst berou.
EDIT: VYŘEŠENO!
z nějakého důvodu je třeba to zaokrouhlit.
j := round(j * 100)/100;
i := round(i * 100)/100;
var
i,j,x: double;
delka, tecka: integer;
s, priklad: string;
begin
i:= 50;
while i < 99 do
begin
i:= i + 0.01;
j:= 1;
while j < 50 do
begin
j:= j + 0.1;
x:= i / j;
s:= floattostr(x);
priklad:= '';
delka:= length(s);
tecka:= pos('.', s);
if ((delka - tecka) < 6) then
begin
priklad:= floattostr(i) + ' ' + ':' + ' ' + floattostr(j) + ' ' + '=' + ' ' + floattostr(x);
lb.items.add(priklad);
end;
end;
end;