Hallo,
ich habe mich mal dran gemacht, um zu sehen, ob ich die Rundungsfehler,
die bei einer Multiplikation eines 16-Bit-integers mit einem 32-Bit-Single,
entstehen, rechnerisch nachvollziehen kann. Das ist mir bislang nicht
ganz gelungen.
Delphi-Quellcode:
var w:word; s,e:single;
w:= 16384;
s := 0.6;
e := w * s;
//s = 0.60000002384
//e = 9830.400390625
Das tatsächliche Ergebnis lautet ja bekanntlich 9830.4
16384 dez = 0100 0000 0000 0000 bin
0.6 dez = 0.1001 1001 1001 1001 1001 .... bin
Okay, s wird in eine Gleitkommazahl vom Typ Single umgewandelt.
Hier gibt es das erste Problem. Ich komme nicht auf den Wert
0.60000002384, sondern er liegt bei mir unter 0.6.
0.6 als Gleitkommazahl dargestellt sieht bei mir so aus:
(VZ) (E-8 Bit) (Mantisse-23 Bit)
0 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 .....
Was ist daran falsch ?
Danke für jede Antwort.
Gruss
Mr. G !