Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wie genau sind SINGLE und DOUBLE?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 13.02.2005, 20:43    Titel: Wie genau sind SINGLE und DOUBLE? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 13.02.2005, 20:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 13.02.2005, 21:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 13.02.2005, 21:36    Titel: Antworten mit Zitat

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 happy

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 lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 13.02.2005, 21:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 13.02.2005, 23:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz