Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Warum werden binäre Gleitkommazahlen so kompliziert gespeichert? (http://www.informatikerboard.de/board/thread.php?threadid=2892)


Geschrieben von Willibergi am 28.02.2016 um 13:44:

  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



Geschrieben von eulerscheZahl am 28.02.2016 um 16:38:

 

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.



Geschrieben von ed209 am 28.02.2016 um 17:28:

  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



Geschrieben von Willibergi am 28.02.2016 um 18:11:

 

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


Forensoftware: Burning Board, entwickelt von WoltLab GmbH