| 
| Autor | Beitrag |  
| Marco D. 
          Beiträge: 2750
 
 Windows Vista
 Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
 
 | 
Verfasst: Di 06.09.05 12:12 
 
Ich hab irgendwo gelesen dass Intel CPUs keine Real-Typen verarbeiten können. Stimmt das?
Das würde doch bedeuten dass Real ausstirbt. Wenn ja welchen Datentyp könnte man denn für solche Zahlen mit Kommastellen nehmen?
 _________________ Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
 |  |  |  
| MagicAndre1981 Ehemaliges Mitglied
 Erhaltene Danke: 1
 
 
 
 
 | 
Verfasst: Di 06.09.05 12:14 
 
  Wo hast du denn das her? Dann würde ja die FPU wieder abgeschafft     Das glaub ich so nicht. Hast du den Link zu der News? |  |  |  
| laserflor 
          Beiträge: 37
 
 Win XP, Win 2000, Win 98, Win NT4
 D5 Prof
 
 | 
Verfasst: Di 06.09.05 12:27 
 
Nun ja .. wenn man sich die Delphi-Hilfe zu Real-Typen ansieht, ist vielleicht damit gemeint, dass es keine Real-Zahlen mehr gibt, die 48 Bit (oder auch 32 Bit: Single) haben:
 	  | Delphi-Hilfe hat folgendes geschrieben: |  	  | Real48 wird nur aus Gründen der Abwärtskompatibilität verwendet. Da das Speicherformat dieses Typs kein natives Format der Intel-CPU ist, laufen die entsprechenden Operationen langsamer ab als mit anderen Gleitkommatypen. | 
 Da ich schon etwas länger (schon mit Borland-Pascal) programmiere, habe ich mir für Gleitkommazahlen angewöhnt real  zu schreiben.     Vielleicht sollte ich mich dann endlich mal an double  gewöhnen:     Gruß Rolf
Moderiert von  Tino: Quote-Tags hinzugefügt. |  |  |  
| SMO 
          Beiträge: 120
 Erhaltene Danke: 18
 
 
 D2005 Personal
 
 | 
Verfasst: Di 06.09.05 12:36 
 
Hier liegt wahrscheinlich ein Missverständnis vor.
 In Delphi gibt's folgende Gleitkommazahltypen:
 		                       Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 | Single   (32 Bit, nach IEEE 754 Standard)Real48   (48 Bit)
 Real     (Real48 oder Double, je nach Version/Einstellung)
 Double   (64 Bit, nach IEEE 754 Standard)
 Extended (80 Bit, natives Format der Intel x87 FPU)
 |  Der Typ Real war ehemals (in Turbo Pascal und ich glaube bis inklusive Delphi 3) 48 Bit groß und wurde, im Gegensatz zu den anderen Gleitkommazahltypen, in der Tat noch nie hardwaremäßig vom Prozessor unterstützt. In den neueren Delphiversionen ist Real äquivalent zu Double, also eine 64 Bit Gleitkommazahl. Wenn man weiterhin den alten 48 Bit Typen will (was nicht zu empfehlen ist), muss man die Real-Variablen als Real48 deklarieren oder den Compilerschalter {$REALCOMPATIBILITY ON}  benutzen. |  |  |  
| Kjell Hält's aus hier
 Beiträge: 10
 
 
 D6 Pers
 
 | 
Verfasst: So 18.09.05 10:51 
Titel: Double und Single wirklich nach IEEE?
 
Hmm,
 wenn ich mir die Zahlenbereiche anschaue, dann habe ich den Eindruck, dass Delphi NICHT nach IEEE arbeitet (jedenfalls nicht nach single/double):
 
 Delphi: [Delphi-Hilfe]
 Single	1.5 x 10^-45 .. 3.4 x 10^38
 Double	5.0 x 10^-324 .. 1.7 x 10^308
 
 IEEE: [wikipedia, decken sich mit ca-Angaben in Patterson/Hennessy]
 single: ±1,18·10-38 ... ±3,40·10+38
 double: ±2,23·10-308 ... ±1,80·10+308
 
 Weiß jemand mehr? Würde mich mal interessieren!
 
 MfG
 Kjell
 |  |  |  
| SMO 
          Beiträge: 120
 Erhaltene Danke: 18
 
 
 D2005 Personal
 
 | 
Verfasst: So 18.09.05 15:08 
Titel: Re: Double und Single wirklich nach IEEE?
 
	  |  Kjell hat folgendes geschrieben: |  	  | wenn ich mir die Zahlenbereiche anschaue, dann habe ich den Eindruck, dass Delphi NICHT nach IEEE arbeitet (jedenfalls nicht nach single/double) | 
 Delphi benutzt die Intel x87 FPU Architektur zum Rechnen (außer man benutzt den alten Real-Typen, Real48, der wird in Software berechnet). Und x87 benutzt definitiv den IEEE 754 Standard für Single und Double, wer's nicht glaubt liest bei Intel nach.
 	  | Zitat: |  	  | Delphi: [Delphi-Hilfe] Single	1.5 x 10^-45 .. 3.4 x 10^38
 Double	5.0 x 10^-324 .. 1.7 x 10^308
 
 IEEE: [wikipedia, decken sich mit ca-Angaben in Patterson/Hennessy]
 single: ±1,18·10-38 ... ±3,40·10+38
 double: ±2,23·10-308 ... ±1,80·10+308
 
 Weiß jemand mehr? Würde mich mal interessieren!
 | 
 Bei mir steht in der Delphi 2005 Hilfe:
 Single   -1.5 x 10^45 .. 3.4 x 10^38
 Double   -5.0 x 10^324 .. 1.7 x 10^308
 Die oberen Angaben decken sich ja ungefähr (statt bei Double 1.79xxxx  auf 1.8 aufzurunden, wurde es in der Delphi-Hilfe wahrscheinlich auf 1.7 abgeschnitten... die Angaben sind sowieso alle nicht genau).
 Für die unteren Werte sieht es so aus, als ob die Wikipedia-Angaben den normalisierten und die Delphi-Hilfe den denormalisierten Wertebereich nutzen. Sie Zeilen 11, 12, 13 der Tabelle 1 auf dieser Seite . |  |  |  
| Kjell Hält's aus hier
 Beiträge: 10
 
 
 D6 Pers
 
 | 
Verfasst: So 18.09.05 17:53 
Titel: Re: Double und Single wirklich nach IEEE?
 
	  |  SMO hat folgendes geschrieben: |  	  | Für die unteren Werte sieht es so aus, als ob die Wikipedia-Angaben den normalisierten und die Delphi-Hilfe den denormalisierten Wertebereich nutzen. Sie Zeilen 11, 12, 13 der Tabelle 1 auf dieser Seite.
 | 
 That's it!    Danke! (Die Delphi-Angaben stehen aber SO in meiner Hilfe...)
 Vielen Dank, ich bin beruhigt!
 Kjell |  |  |  
| Delphi-Laie 
          Beiträge: 1600
 Erhaltene Danke: 232
 
 
 Delphi 2 - RAD-Studio 10.1 Berlin
 
 | 
Verfasst: So 28.02.16 15:16 
 
	  |  SMO hat folgendes geschrieben  : |  	  | Der Typ Real war ehemals (in Turbo Pascal und ich glaube bis inklusive Delphi 3) 48 Bit groß und wurde, im Gegensatz zu den anderen Gleitkommazahltypen, in der Tat noch nie hardwaremäßig vom Prozessor unterstützt. In den neueren Delphiversionen ist Real äquivalent zu Double, also eine 64 Bit Gleitkommazahl. Wenn man weiterhin den alten 48 Bit Typen will (was nicht zu empfehlen ist), muss man die Real-Variablen als Real48 deklarieren oder den Compilerschalter {$REALCOMPATIBILITY ON} benutzen. | 
 Das kann ich bestätigen. Ab Delphi 4 gibt es ggf. andere Ergebnisse.
 Das ist tückisch, wenn man das erstens nicht weiß und zweitens - irrtümlicherweise (trunc statt round verwendet) - auf eine Genauigkeit setzt, die sich mit dem Compilerwechsel ändert. |  |  |  |