Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#13

AW: Float-Literale sind unumstößlich Extended?

  Alt 21. Jan 2020, 13:21
Ist ja interessant! Woher kommt dann aber die 8 für Sizeof(c)?
Delphi-Quellcode:
const
  A = 1;
  B = 10000;
  C = $FFFFFFFF;
  D = Integer($FFFFFFFF); // -1
  F = 0.5;
  G = 1.333333333;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(Format('%d %d %d %d %d %d', [SizeOf(A), SizeOf(B), SizeOf(C), SizeOf(D), SizeOf(F), SizeOf(G)]));
  // 32 Bit: 1 2 4 4 8 10
  // GetTypeName(TypeInfo(F)) oder PTypeInfo(TypeInfo(F)).Name geht nicht
end;
Für untypisierte Konstanten nimmt Delphi meistens erstmal den kleinst möglichen Typen und wenn die spätere Verwendungsstelle keinen anderen Typen vorgibt, dann wird er dort so verwendet.
Bei Floats, wird aber eher oft auf das Größere gegangen, wegen eventueller Rundungsfehler.



Tja, rein theoretisch wäre SizeOf für untypisierte Konstanten nicht verwendbar und teilweise ist sowas auch nicht kompilierbar.


Ich würde eher empfehlen du vergisst Extended.
Single, Double und Currency sind die Typen für gebrochene Zahlen und davon ist Double der Größte. Kommt doch mal irgendwo ein Extended vor, dann ist es zumindestens kein Nachteil.

Offiziell war Extended nie als Speichertyp vorgesehen (nur für die Berechnungen innerhalb der CPU, bzw. für temporäre Variablen/Zwischenergebnisse des Compilers).
Bezütlich 64 Bit-Compilate und der CrossCompiler wurde das in Delphi nun angepasst.
Zitat von ein x87-Designer und die Intel Corporation:
The temporary real (extended) format was designed not to store data at higher precision as such, but rather primarily to allow for the computation of double results more reliably and accurately by minimising overflow and roundoff-errors in intermediate calculations
Drum ist der Typ in anderen höheren Programmiersprachen nicht verfügbar, bzw. wird selten als Variablentyp benutzt. ("long double" in C/C++)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Jan 2020 um 13:27 Uhr)
  Mit Zitat antworten Zitat