Steuerung der Gleitkommagenauigkeit (Delphi für x64)
Nach oben zu Liste der Delphi-Compiler-Direktiven - Index
Typ |
Option |
Syntax |
{$EXCESSPRECISION ON}, {$EXCESSPRECISION OFF} |
Vorgabe |
{$EXCESSPRECISION ON} |
Bereich |
Lokal |
Anmerkungen
Die Direktive $EXCESSPRECISION steuert die Behandlung von Zwischenergebnissen von Gleitkommaausdrücken mit einfacher Genauigkeit (32 Bit) durch den Compiler. $EXCESSPRECISION ist spezifisch für die x64-Ziel-CPU des Delphi-Compilers.
Standardmäßig wird für alle arithmetischen x64-Operationen und -Ausdrücke mit Gleitkommawerten mit einfacher Genauigkeit eine hohe Genauigkeit durch Speichern der Zwischenergebnisse als Gleitkommawerte mit doppelter Genauigkeit (64 Bit) beibehalten. Als Folge davon sind diese Operationen langsamer als Gleitkommaoperationen mit doppelter Genauigkeit (der compilierte Code konvertiert bei jeder Operation Single-Werte in Double-Werte).
Wenn die Ausführungsgeschwindigkeit wesentlich ist, kennzeichnen Sie den fraglichen Code zur Deaktivierung von Zwischenwerten mit doppelter Genauigkeit mit der Direktive {$EXCESSPRECISION OFF}; ansonsten wird die Standarddirektive ({$EXCESSPRECISION ON}) zur Erhöhung der Genauigkeit des Ergebniswertes empfohlen.
Für die x86-Ziel-CPU hat die Direktive $EXCESSPRECISION keine Auswirkung. Der für diese Plattform erzeugte Code verwendet die FPU (Gleitkommaeinheit), die die Zwischenergebnisse jeder Art von Operation als Gleitkommawerte mit der Genauigkeit "extended" (80 Bit) speichert.