Noch kürzer
Code:
function PiRauskriegen: double;
var
Teiler, vz: integer;
Pi: double;
begin
Pi:=1; Teiler:=3; vz:=-1;
while true do begin <-- hier muss eine Abbruchbedingung hin
Pi:=Pi+vz/Teiler;
Teiler:=Teiler+2;
vz:=vz*-1;
end;
PiRauskriegen:=4*Pi;
end;
mit der Anzahl gefundener Nachkommastellen als Abbruchbedingung könnte es dann so aussehen
Code:
function PiRauskriegen(Genauigkeit: integer): double;
var
Teiler, vz: integer;
Pi, Pa, g: double;
begin
Pi:=1; Pa:=3; Teiler:=3; vz:=-1;
g:=power(10,Genauigkeit*-1)/4;
while abs(pa-pi) > g do begin
Pa:=Pi;
Pi:=Pi+vz/Teiler;
Teiler:=(Teiler+2);
vz:=vz*-1;
end;
PiRauskriegen:=4*Pi;
end;