 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 13.02.2005, 20:43 Titel: Wie genau sind SINGLE und DOUBLE? |
|
|
Hi Leute!
Ich bin mir nicht ganz sicher, ob das das richtige Forum dafür ist, aber denke doch, dass es hier am besten passt:
Wie viele Nachkommastellen kann man bei SINGLE/DOUBLE verwenden?
Das einzige, das ich weiß, ist, dass SINGLE 32bit und DOBULE 64bit verwendet.
Oder kann man vielleicht gar nicht genau sagen, wie viele Stellen verfügbar sind?
Ich meine, die heißen ja sicher nicht umsonst "Fließkommazahlen". Ich hab erst vor kurzem in assembler angefangen, und weiß deswegen auch gar nicht, wie man eine kommazahl jetzt in binär darstellt....
Werden einfach die ersten 4 Bytes (bei DOUBLE) für den ganzzahligen Teil und die letzten für die nachkommastelle verwendet?
Dann könnte man diese Zahlen darstellen:
0 - 4294967295,4294967295
(= (2^32 - 1),(2 ^32 - 1)
Was aber irgendwie schwachsinn wäre, weil der kommabereich immer von ,0 - ,999999... reichen müsste...
Also, wie werden Kommazahlen binär dargestellt, und wie ermittelt man anhand der Bytezahl die Nachkommastellen?
Thx für euere AWs! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 13.02.2005, 20:55 Titel: |
|
|
Du hast eine mantisse und einen Exponenten. Bei Single werden 24Bit, bei Double 53Bit für die Mantisse verwendet. Das ergibt eine genauigkeit von 7 bzw. 15 Dezimal-Stellen.
Also z.B. 12345670000000000000 oder 0,0000000000000001234567 bei Single. Das ganze wird aber binär dargestellt, weshalb sich gewisse Zahlen, die dezimal kein Problem sind auf einmal nurnoch ungenau darstellen lassen.
Die größte darstellbare Zahl ist bei Single etwa 10^38, bei Double etwa 10^308. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 13.02.2005, 21:00 Titel: |
|
|
und die kleinste darstellbare Zahl?
-10 ^ 38 (bz 308), oder?
Und wie wäre das bei Unsigned Data's?
Ich schreib nämlich grade an der Übersetzung fürs fb-handbuch, und da möchte ich zu jedem datentyp auch einen bereich angeben können.
Also, die Logik sagt mir jetzt, dass bei unsigned-data der bereich
0-10^38 (bzw 308) * 2 ist, aber das ist fast ein bisschen zuu einfahc.... _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Quark48

Anmeldungsdatum: 16.10.2004 Beiträge: 559 Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern
|
Verfasst am: 13.02.2005, 21:36 Titel: |
|
|
Hallo!
Also SINGLE hat eine genauigkeit von *hmm...* 4 Bytes, damit sind doppelt so große Zahlen möglich wie bei INTEGERn.
Und DOUBLE hat dann (logischerweise) eine genauigkeit von 8 Bytes, dann ist SINGLE auch weg vom Fenster, wenn der große Bruder kommt
Unter C heißt SINGLE FLOAT oder so...
Und DOBLE heißt dann FLOAT DOUBLE...
Aber keine Ahnung! Programmiere sehr ungern mit C/C++! _________________ Grüßle, Stefan
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht!
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/ |
|
Nach oben |
|
 |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 13.02.2005, 21:54 Titel: |
|
|
Zitat: | Also SINGLE hat eine genauigkeit von *hmm...* 4 Bytes, damit sind doppelt so große Zahlen möglich wie bei INTEGERn. |
Ich könnte doch einen Ein-Bit-Zahlentyp erstellen, der nur die beiden Zahlen 1000000000000000000 und -1000000000000000000 darstellen kann. Das heißt deutlich größere Zahlen, als integer und das mit nur einem Bit. Du musst immer beachten, wie die Zahlen interpretiert werden.
Es sind keine Festkomma-Zahlen, sondern Fließkommazahlen!!! http://en.wikipedia.org/wiki/IEEE_754
Du kannst selbst mal Testen, welche Zahl bei welcher Bitkombination rauskommt: http://www.h-schmidt.net/FloatApplet/IEEE754de.html
Zitat: |
und die kleinste darstellbare Zahl?
-10 ^ 38 (bz 308), oder? |
Ja.
Genauer:
±3.4e-38
bzw.
±1.7e-308
Zitat: | Und wie wäre das bei Unsigned Data's? |
Gibt es nicht. Würde auch nciht viel bringen. Dann wäre die Mantisse eben ein Bit länger und manche Zahlen einen Tick genauer. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 13.02.2005, 23:01 Titel: |
|
|
Wer es ganz genau wissen möchte, sollte
http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Gleitkommazahlen.html
lesen. Dort ist in einer Übersichtstabelle aufgeführt, wie lange die Mantisse in Bits bei jedem Fliesskommazahlentyp ist. Mit dem Faktor LOG(2)/LOG(10) kann man übrigens recht einfach ausrechnen, wievielen Dezimalstellen dies entspricht. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|