Currency rundet wohl nach jeder Operation.
Zumindest kann ich mir die Ergebnisse dieses Skriptes nicht anders erklären.
Sub Initialize
Dim cur As Currency
Dim dob As Double
Dim curSum As Currency
Dim dobSum As Double
cur = 1/3
Print "cur=" & Cstr(cur)
dob = 1/3
Print "dob=" & Cstr(dob)
curSum = 0
dobSum = 0
For i=0 To 1000
curSum = curSum + cur
dobSum = dobSum + dob
Next
Print "curSum=" & Cstr(curSum)
Print "dobSum=" & Cstr(dobSum)
End Sub
Ergibt für cur ,3333, für double ,333333333333333
Jetzt könntest du noch argumentieren, dass diese 4 Stellen nur eine externe Darstellungsformel ist, die von der (genaueren) internen Darstellung abweicht. Das ist aber nicht der Fall.
Die Ergebnisse der Schleife mit den 1000 Aditionen kommen zu unterschiedlichen Ergebnissen, die ich mir nur dadurch erklären kann, dass bei currency zum Abschluss jeder Operation auf 4 Stellen hinter dem Komma gerundet wird:
curSum ergibt: 333,6333
doubleSum ergibt: 333,666666666665
Beide Zahlen unterscheiden sich ab der 2. Dezimalstelle relativ stark und das kommt eben dadurch, dass bei currency zum Abschluß jeder Operation auf 4 Stellen gerundet wird.