2

嗯...我遇到了一个问题,我通过一个名为 BIGFLOAT http://www.fractal- Landscapes.co.uk/bigint.html

我需要计算什么 0.4 ^(1000 或 100000000) 这个问题需要很长时间 我还没有学习并行或分布式编程,但我需要一个快速且易于理解的解决方案在接下来的 6 小时内交付这个项目!!:D

这是代码:

private BigFloat getBlocking(double k)
    {
        double p1, p2;
        BigFloat p3;
        p3 = new BigFloat(pp);
        p1 = this.P / (double)(k / (double)this.N);
        p2 = Math.Pow((1 - p1), 2);
        p3= new BigFloat(1-p2,pp);
        p3.Pow((int)k);
        return p3;

    }

其中 K 是 1000 , N 是 1001

4

2 回答 2

7

如果您不需要所有数字,则可以使用对数。的对数(0.4 ^ 100000000)log(0.4)*100000000,很好地在常规浮点范围内。

于 2011-04-21T01:59:35.220 回答
3

从您的 C# 项目下载并参考 Microsoft J# .NET 库 - 以便您可以使用 J# 的 BigDecimal 实现。

看:

C# 中的任意精度小数

大十进制:

安装 J# 运行时(免费): http ://www.microsoft.com/downloads/en/details.aspx?familyid=f72c74b3-ed0e-4af8-ae63-2f0e42501be1&displaylang=en

和:

C#中的任意精度小数?

和:

http://geekswithblogs.net/gyoung/archive/2006/05/01/76869.aspx

J# 可再发行组件包含经过良好测试的 BigInteger 和 BigDecimal 实现,您可以通过引用 J# 程序集 vjslib.dll 直接在 .NET 应用程序中使用它们。 http://download.microsoft.com/download/2/e/9/2e9bde04-3af1-4814-9f1e-733f732369a3/NETMatters0512.exe 进一步讨论了这一点。它还包含一些非常有用的 Zip 类。

和:

MSDN - BigInteger、GetFiles 等

虽然您可以在 Web 上搜索以找到大量 C#、C++ 和各种其他语言的实现,但这可能不是必需的。如果您不介意依赖 J# 库,那么您已经拥有大量的实现供您使用。事实上,你有两个。J# 运行时库 vjslib.dll 可作为可再发行组件使用,就像 .NET Framework 一样。您可以从 Visual J# Downloads 下载它(它也是 Visual Studio® 的先决条件)。就像 C# 或 C++ 应用程序可以使用 Microsoft.VisualBasic.dll(Visual Basic 运行时库)一样,C#、Visual Basic® 和 C++ 应用程序也可以使用 J# 运行时库和许多有趣的它公开的类。

于 2011-04-21T01:13:47.483 回答