Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Welche reelle Typen verwenden? (https://www.delphipraxis.net/118025-welche-reelle-typen-verwenden.html)

Roland1967 30. Jul 2008 08:47


Welche reelle Typen verwenden?
 
Ich verwende für reelle Zahlen meist real, dieser Typ ist laut Onlinehilfe veraltet, aber die Macht der Gewohnheit ist einfach zu groß. :wink:

Nun habe ich in letzter Zeit öfters Rundungsfehler, aus 88.885 wird z.B. nach einigen Berechnungen so etwas wie 88.884999998.
Ich lese Daten mittels FieldByName('Feld').asFloat aus Datenbanken aus und mache dann verschiedene Rechenoperationen.

Als ich konsequent alle reelle Zahlen auf den Typ extended umgestellt habe, war dieser Fehler fort. :)

Also werde ich mich wohl vom Typ real verabschieden. Verwendet ihr auch extended oder sind Typen wie comp oder double besser geeignet?

mkinzler 30. Jul 2008 08:56

Re: Welche reelle Typen verwenden?
 
Single ist ist der Typ mit der geringsten Genauigkeit, Extended der mit der höchsten

Zitat:

Zitat von Delphi-Hilfe
Typ Bereich Signifikante Stellen Größe in Byte
Real48 -2,9 x 10^–39 .. 1,7 x 10^38 11-12 6
Single -1,5 x 10^–45 .. 3,4 x 10^38 7-8 4
Double -5,0 x 10^–324 .. 1,7 x 10^308 15-16 8
Extended -3,6 x 10^–4951 .. 1,1 x 10^4932 10-20 10
Comp -2^63+1 .. 2^63–1 10-20 8
Currency -922337203685477.5808.. 922337203685477.5807 10-20 8


Medium 30. Jul 2008 13:49

Re: Welche reelle Typen verwenden?
 
Zitat:

Zitat von Roland1967
Ich verwende für reelle Zahlen meist real

Real ist in aktuellen Delphis ein Alias für Double, es sei denn es wird per Compilerswitch anders angegeben. Real gibt es nur noch um typnamenmäßig zu alten TP Quellen kompatibel zu bleiben.

Zitat:

Zitat von Roland1967
Nun habe ich in letzter Zeit öfters Rundungsfehler, aus 88.885 wird z.B. nach einigen Berechnungen so etwas wie 88.884999998.

Da gibts hier im Forum schon massig Lesestoff zu. In aller Kürze: Das liegt an der Art und Weise wie Fließkommazahlen gestaltet sind. Der Umstieg auf Extended mag für einige Fälle ausreichend Spiel bieten, aber trotzdem bleibt die prinzipielle Ungenauigkeit. Soll heissen: Auch mit Extended wird dir das Problem eines Tages begegnen können.

Zitat:

Zitat von Roland1967
comp

Zitat:

Zitat von Delphi Hilfe
Der Typ Comp (für "computational") ist ein natives Format der Intel-Prozessorarchitektur und stellt einen 64-Bit-Integer dar. Er ist dennoch als reeller Typ klassifiziert, weil sein Verhalten nicht dem eines ordinalen Typs entspricht. Ein Comp-Wert kann beispielsweise weder inkrementiert noch dekrementiert werden. Comp ist nur aus Gründen der Abwärtskompatibilität vorhanden. Eine höhere Ausführungsgeschwindigkeit erhalten Sie mit dem Typ Int64.



Alle Zeitangaben in WEZ +1. Es ist jetzt 12:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz