Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Unterschied zwischen Double und Float


moloch - Do 15.07.04 13:17
Titel: Unterschied zwischen Double und Float
Hallo Leute,
kann mir jemand den Unterschied zwischen Double und Float nennen?

moloch


Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Do 15.07.2004 um 13:33


Delete - Do 15.07.04 13:26

Den Datentyp Float gibt es nicht. Kuck mal in der Hilfe unter Double nach.


MartinPb - Do 15.07.04 13:43

Float sagt einfach, daß es eine Fließkommazahl ist. Float ist selbst kein Datentyp, aber beschreibt was Double ist. Ein Zahlentyp, der Fließkommazahlen darstellen kann. Allerdings sagt man nicht, daß Double eine Float Zahl ist, sondern eine Reelle Zahl. Beim konvertieren wird allerdings Float genommen: z.B. FloatToStr.


tommie-lie - Do 15.07.04 14:23

MartinPb hat folgendes geschrieben:
Ein Zahlentyp, der Fließkommazahlen darstellen kann. Allerdings sagt man nicht, daß Double eine Float Zahl ist, sondern eine Reelle Zahl. Beim konvertieren wird allerdings Float genommen: z.B. FloatToStr.
Nein, reelle Zahlen sind weitaus mehr, als man mit Double darstellen kann.
Double und Single sind, wie du ja im Satz davor richtig gesagt hast, Fließkommazahlen (mathematisch gesehen keine klassische/alltägliche Zahlenmenge), woher dann auch der Begriff "Float" kommt, nämlich vom englischen "Floating Point" (wir erinnern uns, das Komma ist ein Punkt in Amerika ;-)).
Der "magische" Datentyp "Float" ist implementationsabhängig und entspricht einem Fließkommaformat, daß für die darunterliegende Architektur am einfachsten zu handhaben ist (genauso wie Integer und Cardinal, die beiden sind nämlich auch keine Datentypen sondern nur Aliases). In Delphi für Win32 ist das nunmal der Double, mit anderen Pascal-Compilern auf anderen Architekturen wird "Float" u.U. ein anderer Datentyp sein.


moloch - Do 15.07.04 15:52

ich danke euch allen für die schnelle Antwort.
warum kann man in delphi eigentlich nur ´mit double-werten rechnen und nicht auch mit integer?

moloch


tommie-lie - Do 15.07.04 15:55

moloch hat folgendes geschrieben:
warum kann man in delphi eigentlich nur ´mit double-werten rechnen und nicht auch mit integer?
Ich weiß ja nicht, wie du das Rechnen mit Integer-Werten versuchst, aber bei mir klappt das...


MartinPb - Do 15.07.04 20:22

Man kann schon mit Integern rechnen, aber du kannst , soweit das Resultat Integer sein muß, nur mit +, -, * und div rechen. Soweit du das / Zeichen für die Division nimmst, wird das Ergebnis Reelle Zahl. Also entweder mit div arbeiten oder mit Trunc() das Ergebnis wieder in Integer konvertieren.


UC-Chewie - Fr 16.07.04 09:39

Noch etwas Theorie:
In gängigen Programmiersprachen werden zwei Fließkomma-Datentypen verwendet, ein 32Bit großer (in C, Java, etc. Float; in Delphi: Single) und ein 64 Bit großer (In Java, C, Delphi: Double).
Der Aufbau erfolgt nach dem IEEE Standard 754.
Dabei wird im höchstwertigen Bit das Vorzeichen gespeichert, danach folgen 8 (bei Float) bzw. 11 (bei Double) Bit Exponent. Der Rest ist dann die Mantisse.
Die Zahl wird gespeichert als

Quelltext
1:
2:
(-1)^S * 1.M * 2^(E-127) (für 32 Bit)
(-1)^S * 1.M * 2^(E-1023) (für 64 Bit)


Dabei ist S das Vorzeichen, M die Mantisse und E der Exponent.


moloch - Fr 16.07.04 09:45

noch mal ein danke an euch für die Antworten.
wünsch euch ein schönes wochenende, wenn es nicht noch ein bischen zu früh dafür ist.
mfg
moloch