I did this quick test with BigInteger, ... but not 100% sure with all those big numbers... =>
System.Numerics.BigInteger bigint1 = System.Numerics.BigInteger.Parse("329974300448100608374211110737048701521");
System.Numerics.BigInteger bigint2 = System.Numerics.BigInteger.Parse("326010339881230390929338722651861109232");
System.Numerics.BigInteger bigint3 = System.Numerics.BigInteger.Parse("92097159224555409225");
int decimals = 18;
System.Numerics.BigInteger bigint4 = bigint1 - bigint2;
System.Numerics.BigInteger bigint5 = System.Numerics.BigInteger.Pow(2, 128); //returns very large number
System.Numerics.BigInteger bigint6 = System.Numerics.BigInteger.Pow(10, decimals);
double nDiv = Math.Exp(System.Numerics.BigInteger.Log(bigint4) - System.Numerics.BigInteger.Log(bigint5));
double nResult = (double)(nDiv * (double)bigint3) / (double)bigint6;