AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Formeln in DECMath für mehr genauigkeit
Thema durchsuchen
Ansicht
Themen-Optionen

Formeln in DECMath für mehr genauigkeit

Offene Frage von "nastytrouble"
Ein Thema von nastytrouble · begonnen am 12. Mär 2007 · letzter Beitrag vom 13. Mär 2007
Antwort Antwort
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#1

Re: Formeln in DECMath für mehr genauigkeit

  Alt 13. Mär 2007, 14:37
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz