Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

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

Re: größere reele Typen (> extended)

  Alt 3. Mär 2005, 07:52
Zitat:
So weit ich weiß, kann Hagens Mathe-Unit doch keine Dezimalzahlen oder ?
Das stimmt auch, und denoch kannst du mit Gebrochenen Zahlen rechnen. DECMath enthält den Datentyp IRational, der einen Bruch repräsentiert.
Auch deine zweite Forderung nach Einfachheit der Anwendung erfüllt DECMath:


Delphi-Quellcode:
var
  A,B,C: IRational;
begin
  NSet(A, 1, 3); // A = 1/3
  NSet(B, 4, 5); // B = 1/5
  NSet(C, 0.12345678);

  NMul(A, C);
  NAdd(A, B);
  
  WriteLn( NStr(A) );

// auf Bruch zugreifen

  WriteLn( NStr(A.N) ); // Numerator
  WriteLn( NStr(A.D) ); // Denumerator
end;
Klar, du müsstest noch einige Spezialfunktionen selber basteln zb. Wurzel usw. Allerdings hast du bei den IRational einen entscheidenden Vorteil gegenüber jedem Fließkommadatentyp -> sie haben immer eine wesentlich höhere Genauigkeit, in fact genauer geht es garnicht mehr Fließkommadatentypen sind wesentlich komplexer in der Programmierung ermöglichen dann aber eine enfachere Anwendung weil man einmal die Gesamtgenauigkeit festlegen kann und dann seine Formel reinhämmert. Bei IRational wäre das im Grunde ebenso einfach und denoch muß man bei seinen Formeln genauer auf die erzielten Genauigkeiten achten.

Da man wie oben gesehen auf den Nummerator und Denummerator des Bruches Zugriff hat kann man jede Formel auch auf die Anwendung von Ganzzahlen hin optimieren und umstellen und so die maximal höchste Auflösung/Genauigkeit erreichen.

Ansonsten, bevor du mit DECMath oder den JEDI's (wobei ich nicht weis wo die eine arbitrary Integer/Floatingpoint Library haben sollen ?) was anfängst solltest du dich mal im C++,C#,JAVA Sektor umschauen. Es gibt dort eine wesentlich größere Auswahl. ApFloat kann ich empfehlen.

Gruß Hagen
  Mit Zitat antworten Zitat