float32 -- gibt es da eine Viertelregelung?
pl
- javascript
0 Matthias Apsel0 pl
1 Rolf B
Hmm,
wenn ich mir die Zahlen auf o.g. Seite so angucke, alles was .25 .5 .75 hat wird nicht verrundet oder anderweitig vermurkst. Da muß es wohl eine JS interne Regelung geben ist die irgendwo beschrieben?
MfG
Hallo pl,
wenn ich mir die Zahlen auf o.g. Seite so angucke, alles was .25 .5 .75 hat wird nicht verrundet oder anderweitig vermurkst. Da muß es wohl eine JS interne Regelung geben ist die irgendwo beschrieben?
Lies dies.
Bis demnächst
Matthias
hmm
wenn ich mir die Zahlen auf o.g. Seite so angucke, alles was .25 .5 .75 hat wird nicht verrundet oder anderweitig vermurkst. Da muß es wohl eine JS interne Regelung geben ist die irgendwo beschrieben?
Lies dies.
Das ist mir zu kompliziert. Aber ein deutliches Anzeichen dafür daß wir mit unserem Problemchen nicht alleine sind 😉
Danke!
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
Die nächstkleinere Zweierpotenz ist 1/2. Die merken wir uns und ziehen 0,5 ab. Bleibt 0,275390625
Nächste Möglichkeit ist 1/4. Merken, 0,25 abziehen: 0,025390625
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
1/128 = 0,0078125. Merken, abziehen. Gibt 0,001953125
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
hi Rolf
nein, das liegt daran dass Float so funktioniert.
IEEE Float stellt eine Dezimalzahl als Bruch dar, bei dem der Nenner eine Zweierpotenz ist.
Ahhh. Die Zwei mal wieder 😉
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.
Boah, jetzt ist mir das klar, danke Dir!!!
Übungsaufgabe: Finde einen Bruch dieser Art, dessen dezimaler Wert 1,1 beträgt.
Kannse vergesse, ja, nee, is klar 😉
MfG
Hallo pl,
habe währenddessen nochmal editiert und eine Vorübung eingebaut 😂
Rolf