AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Welche reelle Typen verwenden?

Ein Thema von Roland1967 · begonnen am 30. Jul 2008 · letzter Beitrag vom 30. Jul 2008
Antwort Antwort
Roland1967

Registriert seit: 29. Jun 2006
19 Beiträge
 
Delphi XE6 Professional
 
#1

Welche reelle Typen verwenden?

  Alt 30. Jul 2008, 08:47
Ich verwende für reelle Zahlen meist real, dieser Typ ist laut Onlinehilfe veraltet, aber die Macht der Gewohnheit ist einfach zu groß.

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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Welche reelle Typen verwenden?

  Alt 30. Jul 2008, 08:56
Single ist ist der Typ mit der geringsten Genauigkeit, Extended der mit der höchsten

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
Markus Kinzler
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Welche reelle Typen verwenden?

  Alt 30. Jul 2008, 13:49
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 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 von Roland1967:
comp
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 19:06 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