![]() |
Double immer < MaxDouble
Hallo,
Kann mir jemand erklären, warum die folgende if-Anweisung False zurück liefert? Ich habe ein wenig im Internet gesucht. Jemand sprach von einem Compilerfehler. Das denke ich jedoch nicht, denn dann gäbe es wohl mehr darüber im Netz.
Code:
Ich arbeite mit Delphi XE.
var
Value : Double; begin Value := MaxDouble; if (Value = MaxDouble) then; end; Danke :) |
AW: Double immer < MaxDouble
Fließkommazahlen sind nur selten exakt gleich, nutze daher besser
![]() |
AW: Double immer < MaxDouble
Danke :)
|
AW: Double immer < MaxDouble
Zitat:
Gruß K-H |
AW: Double immer < MaxDouble
![]() Ist zwar aus einem Java-Forum, die Problematik ist aber eher technischer Natur und daher auf keine Programmiersprache beschränkt. |
AW: Double immer < MaxDouble
Da kommt es wohl darauf an, wie "FPU-freundlich" die Konstante definiert ist. Zudem wird intern ja mit 80 Bit gerechnet, so dass da durchaus auch in diesem Fall Rundungen passieren können. Auch wäre interessant, ob Delphi nicht ggf. die Konstante wenn direkt verwendet als Extended interpretiert, während der zugewiesene wirklich ein Double ist. Dann wäre es sogar der offensichtlichste Fall.
|
AW: Double immer < MaxDouble
Danke für die Aufklärung!
Gruß K-H |
AW: Double immer < MaxDouble
Zitat:
32bit: Extended rechnet mit 80 bit (mit FPU) 64bit: Extended rechnet mit 64 bit (ohne FPU) Es gibt einen neuen Typen Extended80 der wiederum immer mit 80 bit arbeitet. |
AW: Double immer < MaxDouble
Zitat:
|
AW: Double immer < MaxDouble
Da es sich bei MaxDouble um keine typisierte Konstante handelt, wird sie intern als Extended dargestellt. Das kann man auch an der darauffolgenden HPPEMIT-Anweisung sehen. Insofern ist es tatsächlich so, daß nach Zuweisung zu einem Double der Vergleich mit der Konstanten fehl schlägt.
Man sollte auch im Hinterkopf behalten, daß die Konstanten je nach Delphi-Version unterschiedliche Werte haben können (unabhängig von 32/64-Bit). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 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