I am writing a class which needs accurate division of the BigInteger class in C#.
Example:
BigInteger x = BigInteger.Parse("1000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
BigInteger y = BigInteger.Parse("2000000000000000000000000000000000000000000000000000000000000000000000000000000000000");
x /= y;
Console.WriteLine(x.ToString());
//Output = 0
The problem is that being an Integer, naturally it does not hold decimal values.
How can I overcome this to get the real result of 0.5 (given example).
P.S. The solution must be able to accurately divide any BigInteger, not just the example!
In the above example, the numbers are still small enough to be converted to
double, so in this case you can sayIf
xandyare too huge for adoublebut still comparable, maybe this great trick is helpful:But in general, when the
BigIntegerare huge, and their quotient is huge too, this is hard to do without importing a third-party library.