获得两个BigIntegers的商数为double

And*_*nck 6 c# math

在保留尽可能多的精度的同时转换两个C#BigIntegers的商的最佳方法是什么?我目前的解决方案是:

Math.Exp(BigInteger.Log(dividend) - BigInteger.Log(divisor));
Run Code Online (Sandbox Code Playgroud)

我猜这不是最理想的.

Ale*_* C. 3

首先阅读这篇文章。它包含您想做的事情。

然后,计算被除数/除数的连分数展开式,当达到想要的精度时停止。您不需要完整昂贵的除法运算(我想它是 O(n log^2 n) 或类似的东西),您只需要整数除法/余数。

尽管如此,只要 BigInteger.Log 返回双精度数, exp(log a / log b) 就会很好地工作,而且我认为它可能比连分式扩展更快。您需要两次转换为双倍(可能很快),并且在整个操作过程中保持准确性(即使对数除数和对数被除数彼此非常接近)。