快速计算大浮点数,比如0.4 ^ 100000000,有什么想法吗?

本文关键字:什么 100000000 计算 浮点数 比如 | 更新日期: 2023-09-27 17:50:38

…我有个问题我有一个特定的计算结果超过10^-308(在double .net中最大的值),我通过一个名为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

快速计算大浮点数,比如0.4 ^ 100000000,有什么想法吗?

如果您不需要所有的数字,您可以使用对数。(0.4 ^ 100000000)的对数是log(0.4)*100000000,完全在正常的浮点范围内。

从您的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#可重新发布的文件包含了very经过良好测试的实现BigInteger和BigDecimal直接在你的。net应用中使用通过引用j#程序集vjslib.dll。http://download.microsoft.com/download/2/e/9/2e9bde04-3af1-4814-9f1e-733f732369a3/NETMatters0512.exe进一步讨论这个问题。它还包含一些Zip类,它们是非常有用。

:

MSDN - BigInteger, GetFiles, and More

而你可以在网上搜索找到一个c#中大量的实现,c++和其他各种语言,这可能没有必要。如果你不介意依赖于j#库,你已经有了一个很大的编号实现在您的处理。事实上,你有两个。的j#运行时库vjslib.dll是作为可重新分发的组件,就像。net框架。你可以从Visual j#下载(它也是作为Visual的先决条件安装工作室®)。以与c#相同的方式或c++应用程序都可以使用Microsoft.VisualBasic.dll基本运行时库),c#, VisualBasic®和c++应用程序都可以使用j#运行时库和有很多有趣的课程公开。