ANSI C Datentyp "float". Wie viele Nachkommastellen kann man maximal definieren?

2 Antworten

Ich denke du hast ein grundlegend falsches Verständnis davon, wie Gleitkommazahlen dargestellt werden. Ein float hat zwar 32 Bit, ja, das hat aber erstmal nichts mit der Anzahl der darstellbaren Nachkommastellen zu tun.

Die 32 Bit teilen sich auf in

- Vorzeichenbit

- Exponent

- Mantisse

für die Darstellbarkeit der gültigen Ziffern ist die Mantisse zuständig. Bei einem float sind das 23 bit, was 7-8 gültigen Ziffern entspricht. Bedenke dabei, dass 7-8 gültige Ziffern nichts mit Nachkommastellen zu tun hat.
Man kann also beispielsweise die Zahl

0,000000000000000342

sehr gut darstellen, obwohl sie viele Nachkommastellen hat (weil führende Nullen in den Exponent wandern). Gleichzeitig wird aber eine Zahl wie

123532345363

gerundet werden müssen, da sie mehr als 7 oder 8 Ziffern hat

Laserpeak2309 
Fragesteller
 24.10.2017, 13:46

Demnach ist es egal wieviele Nachkommastellen man hat, es kommt also nur auf die signifikanten Stellen an?

0

Hei :)

nein, so funktioniert das nicht. Die höchste Zahl, die du mit dem float ausgeben kannst ist die 2^32 - und das ohne Nachkommastellen.

2^32 = 4 294 967 296

das heißt, mit Komma sollte es etwa auf 4, 294 967 296 also rund 9 Nachkommastellen hinauslaufen. Ich weiß leider nicht, inwiefern das Komma als Zeichen relevant ist (funktioniert evtl. wie -/+). Aber mehr als 9 Nachkommastellen wirst du nicht kriegen, eher weniger.

DoTheBounce  24.10.2017, 13:16

So funktioniert das auch nicht ...

0
Laserpeak2309 
Fragesteller
 24.10.2017, 13:44

Ach Gott, ja natürlich hat es nicht die 2^32 STELLEN sondern der Bereich ist 2^32  (/.-) Facepalm

0