快速计算大浮点数,比如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)
的对数是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.aspxj#可重新发布的文件包含了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#运行时库和有很多有趣的课程公开。