Hallo,
ich habe folgendes Problem:
Delphi-Quellcode:
t ist ungefähr 0.012
s ist genau 0.5
NSub(s,t);
s ist 5146823... irgendwas, zumindest nichts sinnvolles.
Kann mir einer schnell erklären, wie diese Zahl zustandekommt? Da sollte ja eigentlich irgendwas mit s = 0.48... rauskommen.
Würde mich über schnelle Antworten sehr sehr freuen, da ich das für eine Arbeit brauche, die ich zu Freitag abzuliefern habe, und das eigentlich heute fertigstellen möchte
/e:
Hab mich entschlossen, dass etwas mehr Kontext nicht Schaden kann:
Delphi-Quellcode:
var
i: Integer;
a,b,s,t,y,l: IRational;
begin
Listbox1.Items.Add('---------Prolog---------');
NSet(a, 1);
NSet(l,NRat(1.411));
NSqrt(l);
Listbox1.Items.Add('l = '+NStr(l));
NDiv(b, NRat(1), l);
NSet(s, 0.5);
NSet(t, 0);
Listbox1.Items.Add('a = '+NStr(a));
Listbox1.Items.Add('b = '+NStr(b));
Listbox1.Items.Add('s = '+NStr(s));
Listbox1.Items.Add('t = '+NStr(t));
Listbox1.Items.Add('---------Iteration---------');
for i:= 1 to 3 do
begin
NSet(y,a); // y = a
Listbox1.Items.Add('y = '+NStr(y));
NAdd(a, b); // a = a+b
NDiv(a, 2); // a = a/2
Listbox1.Items.Add('a = '+NStr(a));
NMul(b,y); // b = b*y
NSqrt(b); // b = sqrt(b)
Listbox1.Items.Add('b = '+NStr(b));
NSub(l,a,y); // l = a - y
Listbox1.Items.Add('l = '+NStr(l));
NPow(t, l, 2); // t = l^2
Listbox1.Items.Add('t = '+NStr(t));
NPow(l, NRat(2), i);
Listbox1.Items.Add('l = '+NStr(l));
NMul(t, l); // t = t*l
Listbox1.Items.Add('t = '+NStr(t));
NSub(s,t);
Listbox1.Items.Add('s = '+NStr(s));
Listbox1.Items.Add('--Fertig mit Schritt '+IntToStr(i));
end;
Listbox1.Items.Add('---------Epilog---------');
NAdd(a, b);
Listbox1.Items.Add('a = '+NStr(a));
NPow(a, 2);
Listbox1.Items.Add('a = '+NStr(a));
NMul(s, 2);
Listbox1.Items.Add('s = '+NStr(s));
NDiv(a, s);
Listbox1.Items.Add('a = '+NStr(a));
Listbox1.Items.Add('Pi = '+NStr(a));
end;
Das Ganze soll der Berechnung von Pi dienen. Die Listbox ist, wie sich unschwer erkennen lässt, nur zur Überprüfung.