Fandt du en løsning siden du lukker?
Problemet er nok, at du benytter floating point.
F.eks. kan du med typen double kun repræsentere 15 betydende cifre - det 16. ciffer er kun "sikkert" for naturlige tal op til +/- 2^53 (=9,0072E15) - se
http://go.microsoft.com/fwlink/?linkid=55424.Hvis du i stedet benytter long som datatype, kan du nå helt op på 18 betydende cifre, da alle bit benyttes til opløsning. Med Long kan du repræsentere op til +/- 2^63 = 9,22337E18 (1 bit benyttes til sign). Hvis du benytter unsignet, har du alle 64 bit til rådighed og en range op til +/- 2^64 = 1,84467E19.