gpt4 book ai didi

c# - 将两个 BigIntegers 的商作为 double

转载 作者:太空狗 更新时间:2023-10-29 21:52:05 26 4
gpt4 key购买 nike

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

Math.Exp(BigInteger.Log(dividend) - BigInteger.Log(divisor));

我猜这是次优的。

最佳答案

先读 this article .它包含您要执行的操作。

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

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

关于c# - 将两个 BigIntegers 的商作为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4679569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com