AW: Problem mit Variable mit dbl dimensioniert
27.04.2010 14:24:36
Ramses
Hallo
Dann kannst du im Extremfall das Limit der Long-Variablen überschreiten
"...Long (lange Ganzzahl) werden als 32-Bit-Zahlen (4 Bytes) mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647 gespeichert..."
Im Extremfall erhältst du z.B. bei folgender Variante einen Überlauf
Sub test()
Dim dblABC As Double, dblABCx As Double, lngA As Long, lngB As Long
dblABCx = 123
lngA = 500000
lngB = 450000
MsgBox lngA - lngB
'Hier kommt der Überlauf
'weil das Ergebnis nicht maximal 2.147.483.647
'sondern 25.000.000.000 ist
MsgBox 50000 * lngA
dblABC = dblABCx / (lngA - lngB) * lngA
MsgBox dblABC
End Sub
Die Mulitplikation wird aber immer zuerst unter den LONG-Variablen durchgeführt und das Ergebnis wäre automatisch ein LONG-Wert der zu einem Überlauf führt, weil der Wert eben zu gross ist
Sub test()
Dim dblABC As Double, dblABCx As Double, lngA As Long, lngB As Long
Dim lngAx As Double, lngBx As Double
dblABCx = 123
lngA = 500000
lngB = 450000
'Hier funktioniert es, weil
'vorher eine Typkonvertierung durchgeführt wird
lngAx = lngA
lngBx = lngB
MsgBox 50000 * lngAx
dblABC = dblABCx / (lngA - lngB) * lngA
MsgBox dblABC
End Sub
Gruss Rainer