// Dividieren von
Integerwerten mit festgelegten Nachkommastellen:
// Getestet mit D4 unter XP
function Divi(zlr, nnr, maxstellen: integer): string;
var
x, i, r: integer;
procedure rechnen(w: integer);
begin
i := (w div nnr);
result := result + inttostr(i);
r := (w mod nnr);
end;
begin
x := 0;
result := '';
rechnen(zlr);
if r <> 0 then result := result + Decimalseparator;
while (r <> 0) and (x < maxstellen) do
begin
if (r < nnr) then r := (r * 10);
rechnen(r);
inc(x);
end;
end;
// Beispielaufruf 101 : 37
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
begin
s := divi(101, 37, 20);
showmessage(s);
end;
//
-----------------------------------------------------------------------
//
Erweiterung mit der Möglichkeit zum Runden der letzten Nachkommastelle:
function DiviX(zlr, nnr, maxstellen: integer; runden: boolean): string;
var
x, i, r: integer;
procedure rechnen(w: integer);
begin
i := (w div nnr);
result := result + inttostr(i);
r := (w mod nnr);
end;
procedure weiter;
begin
if (r < nnr) then r := (r * 10);
end;
begin
x := 0;
result := '';
rechnen(zlr);
if r <> 0 then result := result + Decimalseparator;
while (r <> 0) and (x < maxstellen - 1) do
begin
weiter;
rechnen(r);
inc(x);
end;
if r = 0 then exit;
weiter;
i := (r div nnr);
r := (r mod nnr);
if (r = 0) or not runden then begin
result := result + inttostr(i);
exit;
end;
weiter;
x := (r div nnr);
if x >= 5 then inc(i);
result := result + inttostr(i);
end;
// Beispielaufruf 111 : 66 mit runden
procedure TForm1.Button2Click(Sender: TObject);
var s: string;
begin
s := DiviX(111, 66, 29, true);
showmessage(s);
end;
|