Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
25. Nov 2015
Da Pi für jeden der drei Datentypen unterschiedliche Werte hat (es sind schließlich alles nur Näherungen), würde das auch nur mit drei separaten Konstanten funktionieren, aus denen der Compiler dann die passende aussucht. Genau das tut er aber auch - nur, daß die Konstanten eben nicht irgendwo in System.pas stehen, sondern direkt in den Compilersourcen hinterlegt sind.
Mal ernsthaft,...
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
25. Nov 2015
Wie gesagt, CompilerMagic. Je nach Typ der Zielvariablen wird eine passende Pi-Konstante als Extended, Double oder Single zugewiesen. Das ist effizienter als jedesmal die Umwandlung einer Extended-Konstante in den benötigten Datentyp zu konvertieren. Bei Extended werden dabei die 8087-Befehle bemüht, bei Single und Double werden im Compiler codierte Binärdarstellungen verwendet.
Forum: Object-Pascal / Delphi-Language
Delphi
by Uwe Raabe,
24. Nov 2015
Stimmt, Pi ist eine Function, wird aber vom Compiler offenbar wie eine Konstante behandelt.
Edit: Bei genauem hinsehen wird der Funktionsaufruf einfach in die Zuweisung einer Konstanten umgewandelt. Das ist halt Compiler-Magic.