Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Compiler-Fehler bei Currency-Division und EXCESSPRECISION ? (https://www.delphipraxis.net/213707-compiler-fehler-bei-currency-division-und-excessprecision.html)

Achim Kalwa 12. Sep 2023 14:25

Compiler-Fehler bei Currency-Division und EXCESSPRECISION ?
 
Hallo in die Runde,

(Delphi 11.3)

vermutlich habe ich heute eine Fehler im 64-Bit-Delphi-Compiler gefunden. Gegeben sind zwei Preise, die in Currency-Variablen gespeichert werden. Die Differenz soll als Faktor dargestellt werden:
Code:
var
  Value1 : Currency;
  Value2 : Currency;
  LFactor: Double;
begin
  Value1  := 15;
  Value2  := 12;
  LFactor := Value1 / Value2;
  ShowMessage(FloatToStr(LFactor));
end;
Compiliert für Windows 32 Bit kommt das erwartete Ergebnis heraus: 1,25.
Compiliert für Windows 64 Bit hängt das Ergebnis davon ab, wie der Compilerschalter "EXCESSPRECISION" gesetzt ist:

{$EXCESSPRECISION ON} -> 1,25 (korrekt)
{$EXCESSPRECISION OFF} -> 1 (falsch)

Schaut man sich den erstellten Assembler-Code an, dann wird im Fehlerfall tatsächlich eine Integer-Division mittels "idiv" durchgeführt; ansonsten "call @CompDiv".

Bevor ich im Quality-Portal einen Bugreport aufmachen: Kann dieses Verhalten jemand von Euch mit älteren Delphi-Versionen (als 11.3) reproduzieren? Seit wann gibt es eigentlich den "EXCESSPRECISION"-Schalter?

Stevie 12. Sep 2023 15:47

AW: Compiler-Fehler bei Currency-Division und EXCESSPRECISION ?
 
Zitat:

Zitat von Achim Kalwa (Beitrag 1526805)
Bevor ich im Quality-Portal einen Bugreport aufmachen: Kann dieses Verhalten jemand von Euch mit älteren Delphi-Versionen (als 11.3) reproduzieren? Seit wann gibt es eigentlich den "EXCESSPRECISION"-Schalter?

Japp, ist schon seit XE2 so.

Achim Kalwa 12. Sep 2023 16:33

AW: Compiler-Fehler bei Currency-Division und EXCESSPRECISION ?
 
Zitat:

Zitat von Stevie (Beitrag 1526810)
Japp, ist schon seit XE2 so.

Vielen Dank für die Bestätigung. Dann werde ich mal Embarcadero informieren...


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr.

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