Rolf B: float32 -- gibt es da eine Viertelregelung?

Beitrag lesen

problematische Seite

Hallo pl,

nein, das liegt daran dass Float so funktioniert.

IEEE Float stellt eine Dezimalzahl als Bruch dar, bei dem der Nenner eine Zweierpotenz ist. Der Zähler des Bruches ist die Mantisse, der Exponent des Nenners ist der Exponent der IEEE-Darstellung.

Beispielsweise ist 3,5 = 7/2. Oder 1,375 = 11/8.

Übung 1: Finde diesen Bruch für 0,775390625

  1. Die nächstkleinere Zweierpotenz ist 1/2. Die merken wir uns und ziehen 0,5 ab. Bleibt 0,275390625

  2. Nächste Möglichkeit ist 1/4. Merken, 0,25 abziehen: 0,025390625

  3. 1/8=0,125 - nö. 1/16 = 0,0625 - nö. 1/32 = 0,03125 - nö. 1/64 = 0,015625 - AHA! Merken, abziehen. Gibt 0,009765625

  4. 1/128 = 0,0078125. Merken, abziehen. Gibt 0,001953125

  5. 1/256 = 0,00390625 - nö. 1/512 = 0,001953125 - AHA. Jetzt geht der Bruch auf.

Also: 1/2 + 1/4 + 1/64 + 1/128 + 1/512. Erweitern mit 512: (256+128+8+4+1)/512 = 110001101b/1000000000b oder $$110001101 \cdot 2^{-9} = 1{,}10001101 \cdot 2^{-1}$$

Übungsaufgabe 2: Finde auf diese Weise einen Bruch, dessen dezimaler Wert 1,1 beträgt. Hör auf wenn Deine Nenner in den Bereich von 2^54 kommen. Vergleiche Ergebnis und den so angenäherten Wert. Vergleiche mit JavaScript. Identisch? Genau.

Rolf

--
sumpsi - posui - clusi