快速计算大浮点数就像0.4 ^ 1亿,任何想法?

嗯…我遇到了一个问题我有一个计算结果是超过10 ^ -308(双.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

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

看到:

C#中的任意精度小数

大十进制:

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

和:

C#中的任意精度小数?

和:

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

J#re-distributables包含经过严格测试的BigInteger和BigDecimal实现,只需引用J#assembly 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下载它(它也是由VisualStudio®安装的先决条件)。 与C#或C ++应用程序可以使用Microsoft.VisualBasic.dll(Visual Basic运行时库)的方式相同,C#,VisualBasic®和C ++应用程序可以使用J#运行时库和众多有趣的它暴露的类。

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

Interesting Posts