如何在尽可能保留精度的情况下转换两个C# BigIntegers的商? 我目前的解决方案是: Math.Exp(BigInteger.Log(dividend) - BigInteger.Log(divisor)); 我猜这并不是最佳选择。
首先阅读这篇文章,它包含了您想要做的内容。 其次,计算被除数/除数的连分数展开式,并在达到所需精度时停止。您不需要完整的昂贵除法运算(我认为它是O(n log^2 n)或类似的),您只需要整数除法/余数。 尽管如此,如果BigInteger.Log返回双精度浮点数,exp(log a / log b)的方法将非常有效,我认为它可能比连分数展开更快。您需要进行两次转换以得到双精度浮点数(可能很快),并且在整个操作过程中保持准确性(即使除数和被除数的对数非常接近)。