Informatik
IEEE-754-Gleitkomma-Umrechner
Gib eine Dezimalzahl oder die Bits hexadezimal ein: Du siehst, wie sie sich in Vorzeichen, Exponent und Mantisse aufteilt, welcher Wert wirklich gespeichert wird und wie weit er von deiner Eingabe abweicht.
Warum 0,1 + 0,2 nicht 0,3 ergibt
Der Standard IEEE 754 schreibt eine Zahl als Vorzeichen, Exponent und Mantisse zur Basis zwei: Wert = (−1)^Vorzeichen × 1,Mantisse × 2^(Exponent − Bias). Einfache Genauigkeit hat 8 Exponenten- und 23 Mantissenbits, doppelte 11 und 52. Es ist das Format fast aller Prozessoren und jeder Programmiersprache.
Zur Basis zwei haben nur Brüche mit einer Zweierpotenz im Nenner eine endliche Darstellung. 0,5 und 0,25 ja, 0,1 nicht: binär ist es 0,000110011001100… periodisch und muss abgeschnitten werden. Gespeichert wird der nächstgelegene Wert, bei einem float 0,100000001490116…, und beim Addieren bereits gerundeter Werte summieren sich die Fehler.
Deshalb vergleicht man Gleitkommazahlen nicht mit ==, sondern prüft, ob die Differenz klein ist, und rechnet Geld in ganzen Cent oder mit Dezimaltypen. Sonderwerte vervollständigen das Format: vorzeichenbehaftete Null, Unendlich, NaN und die subnormalen Zahlen, die die Lücke um die Null füllen.
Häufige Fehler
- Zwei Floats mit == vergleichen: 0.1 + 0.2 == 0.3 ist in fast allen Sprachen falsch.
- Floats für Geldbeträge verwenden: Die Rundungen summieren sich. Besser ganze Cent oder ein Dezimaltyp.
- Glauben, ein 32-Bit-Float habe 32 Bit Genauigkeit: Die Mantisse hat 24, etwa 7 Dezimalstellen; ein double hat etwa 16.
Häufige Fragen
Wie viele Dezimalstellen haben float und double?
Ein 32-Bit-float garantiert etwa 7 signifikante Dezimalstellen, ein 64-Bit-double etwa 15 bis 16. Darüber hinaus spiegeln die angezeigten Stellen die binäre Näherung.
Was sind subnormale Zahlen?
Werte unterhalb der kleinsten normalen Zahl: Der Exponent ist ganz null, und die Mantisse verliert die implizite führende 1. So nähern sich Zahlen der Null schrittweise, auf Kosten der Genauigkeit.
Warum gibt es +0 und −0?
Weil das Vorzeichen ein eigenes Bit ist. Beide Nullen sind beim Vergleich gleich, aber 1/+0 ergibt +∞ und 1/−0 ergibt −∞: Sie bewahren die Seite, von der man die Null erreicht hat.
So funktioniert diese Berechnung
Wert = (−1)^s × 1,f × 2^(e − Bias) für normale Zahlen, mit Bias 127 bei einfacher und 1023 bei doppelter Genauigkeit; für subnormale Zahlen (e = 0) ist der Wert (−1)^s × 0,f × 2^(1 − Bias). Ein Exponent aus lauter Einsen mit Mantisse null ist ±∞, mit Mantisse ungleich null NaN. Der exakte Wert wird ohne Rundung dezimal berechnet: Jeder Float ist m × 2^k, und für negatives k gleich m × 5^(−k) ÷ 10^(−k).
Verwandte Rechner
Unicode- und UTF-8-Codes
Codepunkt, UTF-8- und UTF-16-Bytes und HTML-Code jedes Zeichens, Emoji eingeschlossen.
Base64-Umrechner
Von Text, Ganzzahl, Hexadezimal oder Binär nach Base64 und zurück, mit erklärten 6-Bit-Gruppen.
Datenmenge und Downloadzeit
Von Byte zu Gigabyte und Gibibyte, und wie lange ein Download bei einer bestimmten Geschwindigkeit dauert.