Der Fehler hingegen passiert bei Microsoft in der Funktion VariantChangeTypeEx,
Ist der Fehler irgendwie mathematisch erklärbar?
Ich habe mal nachgeschaut. Es wird in varDouble umgewandelt und dann gerundet, wodurch die Genauigkeit flöten geht.
Wenn man als Zieltyp wie ja auch gewünscht varInt64 angibt, funktioniert es korrekt.
Warum das so gemacht wird, kann ich nicht nachvollziehen. Das halte ich dann doch für einen Bug in Delphi.