![]() |
Arithmetik 16-Bit word und 32-Bit single
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:
Das tatsächliche Ergebnis lautet ja bekanntlich 9830.4
var w:word; s,e:single;
w:= 16384; s := 0.6; e := w * s; //s = 0.60000002384 //e = 9830.400390625 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 ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz