P: VBA Excel 2003 SP3: Vergleich zweier Double Zahlen

17/03/2008 - 17:49 von Martin Jaeger | Report spam
hallo,

ich vergeliche Zwei Doublezahlen:
dblA: 37015731,01
dblB: (summe aus 3 anderen Doublezahlen)
dblB = dblX+DblY+DblZ = = 37015731,01
Der Vergleich erfolgt in einer If ... then Bedingung
Variante 1:
If Not (dblA = dblB) then
...

Variante 2:
If dblA <> dblB then
...
Warum sind die obigen Zahlen denn unterschiedlich? Die Zahlen habe ich dem
Überwachungsfensterentnommen. Sie sind nun wirklich identisch, worin kann
hier der Fehler liegen?

Vielen Dank und viele Grüße

Martin
 

Lesen sie die antworten

#1 Ka Prucha
17/03/2008 - 18:24 | Warnen spam
"Martin Jaeger" schrieb

ich vergeliche Zwei Doublezahlen:
dblA: 37015731,01
dblB: (summe aus 3 anderen Doublezahlen)
dblB = dblX+DblY+DblZ = = 37015731,01
If dblA <> dblB then
...
Warum sind die obigen Zahlen denn unterschiedlich? Die Zahlen habe ich dem
Überwachungsfensterentnommen. Sie sind nun wirklich identisch, worin kann
hier der Fehler liegen?



Servus

Weil alle Float auch Doublezahlen intern im Binàrsystem verarbeitet werden.
Ein Wert wie 0,1 ist dabei ein Endlosbruch wie 0,333... im Dezimalsystem.

Wenn du 0,333333 + 0,6666666 addierst erhàltst du auch nur manchmal
im Display eine 1. In Wirklichkeit steht dann im Hintergrund etwas wie
0,99999960001.

Vergleiche also round(dblX+DblY+DblZ;2) = round(37015731,01;2)
oder ((dblX+DblY+DblZ)-37015731,01) < 0,005

mfg Ka Prucha

Ähnliche fragen