Warum werden binäre Gleitkommazahlen so kompliziert gespeichert?

Neue Frage »

Auf diesen Beitrag antworten »
Willibergi Warum werden binäre Gleitkommazahlen so kompliziert gespeichert?

Moin,
ich beschäftige mich momentan ein bisschen damit, wie Rechner rechnen.
Ich weiß, dass beispielsweise bei Java bei 10.5 - 0.5 = 9.9999999998 herauskommt, weil die binären Zahlen dann periodisch werden und gerundet werden.
Wenn ich die Zahl 12,45 habe, ist diese in binär
1100,011100 (das unterstrichene soll eine Periode darstellen)
12 ist aber 1100 und 45 ist 101101.
Warum ist dann aber 12,45 nicht 1100,101101?
Man erweitert dann die Zahl solange, bis es kein Komma mehr gibt und speichert die Stelle des Kommas in einem Extrabit (so wie das Vorzeichen auch gespeichert wird)
Ich weiß, wie man eine Gleitkommazahl binär umrechnet, aber warum macht man das so und nicht so, wie ich es gerade vorgestellt habe?
LG Willibergi
 
Auf diesen Beitrag antworten »
eulerscheZahl

Damit hättest du ein Overflow Problem, wie bei Integern auch.
Da nehme ich lieber die mangelnde Präzision hin, als komplett falsche Ergebnisse zu bekommen.
Auf diesen Beitrag antworten »
ed209 RE: Warum werden binäre Gleitkommazahlen so kompliziert gespeichert?

Zitat:
Original von Willibergi
Warum ist dann aber 12,45 nicht 1100,101101?
Man erweitert dann die Zahl solange, bis es kein Komma mehr gibt und speichert die Stelle des Kommas in einem Extrabit (so wie das Vorzeichen auch gespeichert wird)


Gute Frage!
Man kann das Vorzeichen in einem einzelnen Bit speichern, weil es nur zwei Möglichkeiten gibt: Plus und Minus.
Wieviel Bit brauchst Du um die Stelle des Vorzeichen zu speichern? (Die Frage ist ein wenig tricky)

Gruß,
ED
Auf diesen Beitrag antworten »
Willibergi

Zitat:
Wieviel Bit brauchst Du um die Stelle des Vorzeichen zu speichern? (Die Frage ist ein wenig tricky)


Ich weiß nicht, ob du das meinst, was du schreibst, aber für die Stelle des Vorzeichens brauche ich gar keinen Bit - das ist nämlich immer vorne. großes Grinsen

Wenn du die Stelle des Kommas meinst, wäre dieser Wert unendlich groß, weil es unendlich viele Stellen nach dem Komma geben kann.

Aber ein Double, also der größtmögliche Datentyp für Kommazahlen, ist auf 15 signifikante Stellen genau.
Ich hätte dann maximal einen Wert von 15, wenn ich das Komma speichere.
Ich schätze, das wären 4 Bit, oder? (1111 = 15)
LG Willibergi
 
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »