Um zb. den Sinus in einem IInteger zu berechnen mit zb. 1024 Bit Genauigkeit kannst du so arbeiten
Delphi-Quellcode:
var
I: IInteger;
begin
NBit(I, 1024, True); // I := 2^1024
NSin(I, NInt(4), NInt(5)); // I := I * Sin(4 / 5);
end;
Dies berechnet also den Sinus aus der gebrochenen Zahl 4 / 5 und multipliziert das mit 2^1024, das steht dann in I.
Das ist im Grunde eine ganz normale Skalierung der Berechnungen. Statt also mit Nachkommastellen zu rechnen verschiebt man per Skalierung alle Berechnungen in den Ganzzahl Bereich.
Angenommen du möchtest 1/5 = 0.2 berechnen hast aber keine Fließkommazahlen oder die Genauigkeit reicht nicht aus. Dann kann man auch skalieren zb. mit 1000. Man rechnet also 4 * 1000 / 5 und bekommt 200 raus. Das finale Ergebnis wird dann einfach mit / 1000 runterskaliert -> 200 / 1000 = 0.2. Die IRational Datentypen gehen im Grunde exakt so vor, nur das sie eben intern den Nenner und Zähler abspeichern und erst in der Funktion NStr() diese Skalierungen durchführen, also bei der Ausgabe der Zahl.
Gruß Hagen